时间函数
Flink SQL所支持的时间函数如表1所示。
函数说明
函数 |
返回值 |
描述 |
---|---|---|
DATE string |
DATE |
将日期字符串以“yyyy-MM-dd”的形式解析为SQL日期。 |
TIME string |
TIME |
将时间字符串以“HH:mm:ss”形式解析为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 TO HOUR,DAY TO MINUTE,DAY TO SECOND或DAY TO milliseconds,比如range为DAY TO SECOND就表示天数、小时、分钟、秒的位置都有效,精度到秒,DAY TO MINUTE就表示精度到分钟。 例如: INTERVAL '10 00:00:00.004' DAY TO milliseconds表示间隔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) |
INT |
提取时间点的一部分或者时间间隔。以int类型返回该部分。 例如:提取日期“2006-06-05”中的日为5。 |
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。 |
QUARTER(date) |
INT |
从SQL日期返回一年的四分之一。 |
(timepoint, temporal) OVERLAPS (timepoint, temporal) |
BOOLEAN |
确定两个时间间隔是否重叠。时间点和时间被转换成在两个时间点(开始,结束)定义的范围之内,该计算函数是leftEnd >= rightStart && rightEnd >= leftStart。当左边结束时间点大于等于右边开始时间点,且右边结束时间点大于等于左边开始时间点,则函数返回true值,否则返回false。 例如:
|
TO_TIMESTAMP(long expr) |
TIMESTAMP |
转换为时间戳。 该函数入参数据类型仅支持BIGINT,不支持VARCHAR,STRING等其他数据类型。 例如,TO_TIMESTAMP(1628765159000)转换后值为:2021-08-12 18:45:59。 |
UNIX_TIMESTAMP |
BIGINT |
返回指定参数的时间戳,时间戳类型为BIGINT类型,单位为“秒”。 支持如下几种使用方法:
|
UNIX_TIMESTAMP_MS |
BIGINT |
返回指定参数的时间戳,时间戳类型为BIGINT类型,单位为“毫秒”。 支持如下几种使用方法:
|
注意事项
无。
示例
insert into temp SELECT Date '2015-10-11' FROM OrderA;//返回日期 insert into temp1 SELECT Time '12:14:50' FROM OrderA;//返回时间 insert into temp2 SELECT Timestamp '2015-10-11 12:14:50' FROM OrderA;//返回时间戳