SQL支持函数

使用SELECT语句查询分析存储映射表所支持的函数,包括时序函数、时间函数、聚合函数、数学函数和字符串函数等。

时序函数

函数

函数输出类型

描述

time_bin(_time,interval)

Datetime

配合group by对时间进行分桶。例如group by time_bin(_time,"10s")表示对时间每十秒分为一个桶,结合聚合函数可以对桶中数据进行计算。

其中_time参数为时序时间列_time。interval参数为分桶的大小,类型为字符串。interval参数可以指定为不同时间单位,可以使用缩写。例如group by time_bin(_time,"10s")group by time_bin(_time,"30min")group by time_bin(_time,"1h")group by time_bin(_time,"1d")group by time_bin(_time,"10day")

tag_value_at(_tags,tag_key)

Varchar

返回时序标签中指定key对应的value值。

_tags参数为时序标签列_tags,tag_key参数为_tags中的key。

时间函数

重要

通过控制台使用时序分析存储功能时,输出的datetime类型值的时区为系统时区(中国为北京时间,即UTC+8)。通过SDK使用时序分析存储功能时,输出的datetime类型值的时区会被转换为UTC时间,请根据业务需要进行时区转换。本文以北京时间,即UTC+8时区为例介绍。

函数

函数输出类型

描述

from_unixtime(unix_timestamp)

Datetime

unix时间戳转换为Datetime类型并返回。unix时间戳会进行时区转化。例如from_unixtime(1447430881) 的返回值为'2015-11-13 10:08:01'

其中unix_timestamp参数为秒级别的unix时间戳。

from_unixtime(unix_timestamp,fsp)

Datetime

unix时间戳转换为Datetime类型,roundfsp位数后返回。unix时间戳会进行时区转化。例如from_unixtime(1447430881.132216,3)的返回值为'2015-11-14 00:08:01.132'

其中unix_timestamp参数为秒级别的unix时间戳。fsp参数为精度,最大值为6,如果fsp的值大于6,则会抛出异常;如果fsp的值小于0,则不进行round。

from_unixtime_millis(unix_timestamp_millis)

Datetime

unix时间戳转换为Datetime类型并返回。unix时间戳会进行时区转化。例如from_unixtime_millis(1447430881231)的返回值为 '2015-11-14 00:08:01.231000'

其中unix_timestamp_millis参数为毫秒级别的unix时间戳。

from_unixtime_micros(unix_timestamp_micros)

Datetime

unix时间戳转换为Datetime类型并返回。unix时间戳会进行时区转化。例如from_unixtime_micros(1447430881231781)的返回值为'2015-11-14 00:08:01.231781'

其中unix_timestamp_micros参数为微秒级别的unix时间戳。

unix_timestamp()

Double

返回所在时区当前时间的秒级别unix时间戳。

unix_timestamp_millis()

Double

返回所在时区当前时间毫秒级unix时间戳。精度为秒。例如unix_timestamp_millis()的返回值为1686299575000。

该函数等价于unix_timestamp() *1000

重要

该函数返回的时间戳位数到毫秒,但精度为秒,而非毫秒。

unix_timestamp_millis(datetime)

Double

返回datetime所在时区的毫秒级unix时间戳。

其中datetime参数为Datetime类型的时间。

unix_timestamp_millis(datestr)

Double

返回datestr所在时区对应日期的毫秒级unix时间戳。例如unix_timestamp_millis("2023-06-09 16:23:31.000000")的返回值为1686299011000.000000

其中datestr参数为时间字符串,必须明确指定年月日。取值范围为1970-01-01 00:00:01.000000 UTC2038-01-19 03:14:07.999999UTC。

重要
  • 由于datestr参数必须指定年月日,如果输入非法的datestr参数,例如select unix_timestamp_millis("2023-07"),则返回结果为null。

  • 如果设置的datestr参数值超出了取值范围(1970-01-01 00:00:01.000000 UTC2038-01-19 03:14:07.999999UTC),则返回结果为0。

unix_timestamp_micros()

Double

返回所在时区当前时间微秒级unix时间戳。精度为秒。例如unix_timestamp_micros()的返回值为1686299575000000。

该函数等价于unix_timestamp() *1000000

重要

该函数返回的时间戳位数到微秒,但精度为秒,而非微秒。

unix_timestamp_micros(datetime)

Double

返回datetime所在时区的微秒级unix时间戳。

其中datetime参数为Datetime类型的时间。

unix_timestamp_micros(datestr)

Double

返回datestr所在时区对应日期的微秒级unix时间戳。例如unix_timestamp_micros("2023-06-09 16:23:31.000000")的返回值为1686299011000000.000000

其中datestr参数为时间字符串,必须明确指定年月日。取值范围为1970-01-01 00:00:01.000000 UTC2038-01-19 03:14:07.999999UTC。

重要
  • 由于datestr参数必须指定年月日,如果输入非法的datestr参数,例如select unix_timestamp_micros("2023-07"),则返回结果为null。

  • 如果设置的datestr参数超出了取值范围(1970-01-01 00:00:01.000000 UTC2038-01-19 03:14:07.999999UTC),则返回结果为0。

timediff(expr1,expr2)

Time

计算expr1expr2的差值。

其中expr参数的类型可以为Datetime类型、Time类型和字符串类型。

addtime(expr1,expr2)

expr1相同

计算expr1expr2的和。

其中expr1参数的类型可以为Datetime类型和Time类型,expr2参数的类型只能为Time类型。

date(datetime)

Date

返回datetime的日期部分。

其中datetime参数为Datetime类型的时间。

hour(expr)

BigInt

返回expr的小时部分。

其中expr参数的类型可以为Datetime类型和Time类型。

minute(expr)

BigInt

返回expr的分钟部分。

其中expr参数的类型可以为Datetime类型和Time类型。

second(expr)

BigInt

返回expr的秒部分。

其中expr参数的类型可以为Datetime类型和ime类型。

microsecond(expr)

BigInt

返回expr的微秒部分。

其中expr参数的类型可以为Datetime类型和Time类型。

month(expr)

BigInt

返回expr的月份部分。

其中expr参数的类型可以为Datetime类型和Date类型。

year(expr)

BigInt

返回expr的年部分。

其中expr参数的类型可以为Datetime类型和Date类型。

week(expr)

BigInt

返回expr日期是本年的第几周。

其中expr参数的类型可以为Datetime类型和Date类型。

week(expr,mode)

BigInt

返回expr日期根据指定mode计算是本年的第几周。

其中expr参数的类型可以为Datetime类型和Date类型。mode参数取值范围如下所示(兼容MySQL)。

image.png

weekday(expr)

BigInt

返回一个日期的星期索引值。返回值为0表示星期一,1表示星期二,以此类推,6表示星期日。

其中expr参数可以为Datetime类型和Date类型。

weekofyear(expr)

BigInt

返回一个日期所在的周数。其取值范围为153。WEEKOFYEAR等价于WEEK(date,3),

expr参数的类型可以为datetime类型和date类型。

dayofmonth(expr)

BigInt

函数返回一个日期的日份。返回值的范围为131。

其中expr参数的类型可以为Datetime类型和Date类型。

dayofweek(expr)

BigInt

返回一个日期的星期索引值。返回值为1表示星期日,2表示星期一,以此类推,7表示星期六。

其中expr参数的类型可以为Datetime类型和Date类型。

dayofyear(expr)

BigInt

返回一个日期在当年中的第几天。返回值的范围为1366。

其中expr参数的类型可以为Datetime类型和Date类型。

monthname(expr)

Varchar

返回expr日期的月份全名。

其中expr参数的类型可以为Datetime类型和Date类型。

dayname(expr)

Varchar

返回expr日期在星期中的全名。

其中expr参数的类型可以为Datetime类型和Date类型。

聚合函数

函数

函数输出类型

描述

count(expr)

Bigint

返回SELECT语句检索的行中非NULL值的数量。结果为一个Bigint值。

sum(expr)

返回类型与expr类型一致

返回expr字段的和。

如果查询结果为空,则返回NULL。

avg(expr)

Double

返回expr字段的平均值。

如果查询结果为空,则返回NULL。

min(expr)

返回类型与expr类型一致

返回expr字段的最小值。

如果expr为字符串,则输出为字典序最小字符串。

max(expr)

返回类型与expr类型一致

返回expr字段的最大值。

如果expr为字符串,则输出为字典序最大字符串

max_by(expr1,expr2)

返回类型与expr1类型一致

返回与expr2最大值关联的expr1的值,即expr2最大值所在行expr1的值。

expr2所关联的expr1NULL时,输出NULL。expr1expr2均可为字符串。

min_by(expr1,expr2)

返回类型与expr1类型一致

返回与expr2最小值关联的expr1的值,即expr2最小值所在行expr1的值。

expr2所关联的expr1NULL时,输出NULL。expr1expr2均可为字符串。

bit_and(expr)

Bigint

返回expr字段进行按位与运算的结果。

如果查询结果为空,则返回所有位均为164位整数。

bit_or(expr)

Bigint

返回expr字段进行按位或运算的结果。

如果查询结果为空,则返回所有位均为064位整数。

bit_xor(expr)

Bigint

返回expr字段进行按位异或运算的结果。

如果查询结果为空,则返回所有位均为064位整数。

std(expr)

Double

返回expr字段的总体标准差。std、stddevstddev_pop为三个同名函数,三者等价。

如果查询结果为空,则返回NULL。

stddev(expr)

Double

stddev_pop(expr)

Double

stddev_samp(expr)

Double

返回expr字段的样本标准差。

如果查询结果为空,则返回NULL。

var_pop(expr)

Double

返回expr字段的总体方差。

var_popvariance为两个同名函数,两者等价。

如果查询结果为空,则返回NULL。

variance(expr)

Double

var_samp(expr)

Double

返回expr字段的样本方差。

如果查询结果为空,则返回NULL。

数学函数

函数

函数输出类型

描述

mod(x,y)

x类型相同

返回x除以y的余数。

如果y0,则返回0。

abs(x)

x类型相同

返回x的绝对值。

ceil(x)

x类型相同

返回不小于x的最小整数值,即向上取整。

floor(x)

x类型相同

返回不大于x的最小整数值,即向下取整。

round(x)

x类型相同

返回x四舍五入后的整数值。

round(x,y)

x类型相同

返回x四舍五入到小数点后y位的值。

acos(x)

Double

返回x的反余弦值,即cos(y)=x时,y的值。

如果x的取值不在-11的范围内,则返回NULL。

asin(x)

Double

返回x的反正弦值,即sin(y)=x时,y的值。

如果x的取值不在-11的范围内,则返回NULL。

atan(x)

Double

返回x的反正切值,即tan(y)=x时,y的值。

atan2(x,y)

Double

返回两个变量xy的反正切,这与计算y/x的反正切类似,只是两个参数的符号都用于确定结果的象限。

cos(x)

Double

返回x的余弦值。x值以radians格式表示。

sin(x)

Double

返回x的正弦值。x值以radians格式表示。

tan(x)

Double

返回x的正切值。x值以radians格式表示。

exp(x)

Double

返回e(自然对数的基数)的x次方的值。

pow(x,y)

Double

返回xy次方的值。

radians(x)

Double

返回从度数转换为弧度的参数x。

重要

π弧度等于180度。

sqrt(x)

Double

返回x的平方根。

sign(x)

Bigint

根据x为负数、零或者正数,将参数的符号返回为-1、01。

pi()

Double

返回Pi值,即圆周率π的值。

ln(x)

Double

返回x的自然对数,即xe为底的对数。

如果x小于或等于0,则返回NULL。

log2(x)

Double

返回x2为底的对数。

如果x小于或等于0.0E0,则返回NULL。

log10(x)

Double

返回x10为底的对数。

如果x小于或等于0.0E0,则返回NULL。

字符串函数

函数

函数输出类型

描述

length(str)

Bigint

返回字符串以字节计算的长度。

concat(str1,str2...)

Varchar

返回字符串合并的结果。支持输入多个字符串。

to_base64(str)

Varchar

返回对str进行base64编码后的字符串。

hex(str)

Bigint

返回str的十六进制字符串表示,其中str中每个字符的每个字节均转换为两个十六进制数字。

hex(str)

Varchar

返回x的十六进制字符串表示。例如hex(255)的返回值为'FF'

instr(str1,substr)

Bigint

返回substr在字符串str中首次出现的位置。

lower(str)

Varchar

返回str的小写。

ltrim(str)

Varchar

返回str去除头部空格后的字符串。

lpad(str,len,padstr)

Varchar

padstrstr的左侧填充,将其长度填充为len,返回这个填充后的字符串。

如果str的长度大于len值,则返回值会被截断为len个字符。例如lpad("aa",3,"0")的返回值为"0aa"lpad("aa",1,"0")的返回值为 "a"

rtrim(str)

Varchar

返回str去除尾部空格后的字符串。

rpad(str,len,padstr)

Varchar

padstrstr的右侧填充,将其长度填充为len,返回这个填充后的字符串。

如果str的值大于len的值,则返回值会被截断为len个字符。

trim(str,len,padstr)

Varchar

返回str去除头部和尾部空格后的字符串。

substr(str,pos1,pos2)

Varchar

strpos1个字符开始,截取之后pos2个字符作为返回的字符串。

如果函数中未设置pos2参数,则从第pos1个字符开始截取之后所有字符作为返回的字符串。

replace(str,from_str,to_str)

Varchar

返回将str中所有的from_str替换为to_str后的字符串。在搜索from_str时会区分大小写。

reverse(str)

Varchar

返回str反转后的结果。

upper(str)

Varchar

返回str的大写。