数据湖探索 DLI-时间函数:函数说明

时间:2023-11-01 16:20:08

函数说明

表1 时间函数

函数

返回值

描述

DATE string

DATE

将日期字符串以"yyyy-MM-dd"的形式解析为SQL日期。

TIME string

TIME

将时间字符串以"HH:mm:ss[.fff]"形式解析为SQL时间。

TIMESTAMP string

TIMESTAMP

将时间字符串转换为时间戳,时间字符串格式为:"yyyy-MM-dd HH:mm:ss[.fff]"。

INTERVAL string range

INTERVAL

interval表示时间间隔。有两种类型,分别为:

  • 一种为"yyyy-MM"即保存年份和月份,精度到月份,它的range参数可以为YEAR或者YEAR To Month
  • 一种为天时间"dd HH:mm:sss.fff",用来保存天数、小时、分钟、秒和毫秒, 精度最低到毫秒。它的range参数可以为DAY、MINUTE、DAY TO HOUR、DAY TO SECOND

例如:

INTERVAL '10 00:00:00.004' DAY TO second表示间隔10天4毫秒。

INTERVAL '10' DAY表示间隔10天

INTERVAL '2-10' YEAR TO MONTH表示间隔2年10个月。

CURRENT_DATE

DATE

以UTC时区返回当前SQL日期。

CURRENT_TIME

TIME

以UTC时区返回当前SQL时间。

CURRENT_TIMESTAMP

TIMESTAMP

以UTC时区返回当前SQL时间戳。

LOCALTIME

TIME

返回当前时区的当前SQL时间。

LOCALTIMESTAMP

TIMESTAMP

返回当前时区的当前SQL时间戳。

EXTRACT(timeintervalunit FROM temporal)

BIGINT

提取时间点的一部分或者时间间隔。以int类型返回该部分。

例如:提取日期“2006-06-05”中的日为5

EXTRACT(DAY FROM DATE '2006-06-05') 返回5。

YEAR(date)

BIGINT

返回输入时间的年份

例如:YEAR(DATE '1994-09-27') 返回1994

QUARTER(date)

BIGINT

从SQL日期返回表示该日期季度的数字。

MONTH(date)

BIGINT

返回输入时间的月份

例如:MONTH(DATE '1994-09-27')返回9

WEEK(date)

BIGINT

计算当前日期是一年中的第几周

例如:WEEK(DATE '1994-09-27') 返回39

DAYOFYEAR(date)

BIGINT

计算当前日期是一年中的第几天

例如:DAYOFYEAR(DATE '1994-09-27') 返回270

DAYOFMONTH(date)

BIGINT

计算当前日期是这个月的第几天

例如:DAYOFMONTH(DATE '1994-09-27') 返回27

DAYOFWEEK(date)

BIGINT

计算当前日期是当前周的第几天

其中周日设为1

例如:DAYOFWEEK(DATE '1994-09-27') 返回3

HOUR(timestamp)

BIGINT

返回当前时间戳的24小时制的小时数,范围0-23

例如:HOUR(TIMESTAMP '1994-09-27 13:14:15') 返回13

MINUTE(timestamp)

BIGINT

返回当前时间戳中的分钟数,范围0-59

例如:MINUTE(TIMESTAMP '1994-09-27 13:14:15') 返回14

SECOND(timestamp)

BIGINT

返回当前时间戳中的秒数,范围0-59

例如:SECOND(TIMESTAMP '1994-09-27 13:14:15') 返回15

FLOOR(timepoint TO timeintervalunit)

TIME

向下对齐时间。

例如:FLOOR(TIME '12:44:31' TO MINUTE)按分钟对齐到12:44:00。

CEIL(timepoint TO timeintervalunit)

TIME

向上对齐时间。

例如:CEIL(TIME '12:44:31' TO MINUTE)按分钟对齐到12:45:00。

(timepoint1, temporal1) OVERLAPS (timepoint2, temporal2)

BOOLEAN

若两个时间范围有重叠,则返回TRUE

例如:

(TIME '2:55:00', INTERVAL '1' HOUR) OVERLAPS (TIME '3:30:00', INTERVAL '2' HOUR) 返回TRUE

(TIME '9:00:00', TIME '10:00:00') OVERLAPS (TIME '10:15:00', INTERVAL '3' HOUR) 返回 FALSE

DATE_FORMAT(timestamp, string)

STRING

将日期从源格式转换至目标格式

TIMESTAMPADD(timeintervalunit, interval, timepoint)

TIMESTAMP/DATE/TIME

将整型interval与timeintervalunit组成的结果添加日期或日期时间到timepoint中,并返回添加后的日期时间

例如:TIMESTAMPADD(WEEK, 1, DATE '2003-01-02') 返回2003-01-09

TIMESTAMPDIFF(timepointunit, timepoint1, timepoint2)

INT

返回timepoint1和timepoint2相差的时间单元数量

timepointunit表示时间单元,应该是SECOND、MINUTE、HOUR、DAY、MONTH或YEAR

例如: TIMESTAMPDIFF(DAY, TIMESTAMP '2003-01-02 10:00:00', TIMESTAMP '2003-01-03 10:00:00') 返回1

CONVERT_TZ(string1, string2, string3)

TIMESTAMP

将string2时区的时间string1转换为其在string3时区的对应时间

例如:CONVERT_TZ('1970-01-01 00:00:00', 'UTC', 'America/Los_Angeles') 返回'1969-12-31 16:00:00'

FROM_UNIXTIME(numeric[, string])

STRING

根据时间戳numeric和当前时区返回string格式的时间

string默认格式为'YYYY-MM-DD hh:mm:ss'

例如:FROM_UNIXTIME(44)返回1970-01-01 09:00:44

UNIX_TIMESTAMP()

BIGINT

返回当前时间的时间戳,单位为秒

UNIX_TIMESTAMP(string1[, string2])

BIGINT

将string2格式的时间字符串string1转为时间戳,单位为秒

string2默认格式为'yyyy-MM-dd HH:mm:ss'

TO_DATE(string1[, string2])

DATE

将string2格式的日期字符串,转换为DATE类型

string2默认格式为 'yyyy-MM-dd'

TO_TIMESTAMP(string1[, string2])

TIMESTAMP

将string2格式的日期时间字符串转换为TIMESTAMP类型

string2默认格式为'yyyy-MM-dd HH:mm:ss'

support.huaweicloud.com/sqlref-flink-dli/dli_08_0334.html