时间函数

本文介绍了时序分析存储中使用SELECT语句查询数据时支持的时间函数。

重要

通过控制台使用时序分析存储功能时,输出的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类型。