TIME_TRUN函数用于将时间time按照date_part指定的时间单位进行截取,返回以微秒为单位用BIGINT类型表示的时间值。
命令格式
BIGINT TIME_TRUNC(BIGINT <time>, STRING <date_part>)
-- 标准示例。
-- 1234567890。
SELECT TIME_TRUNC(1234567890L,'ff6');参数说明
time:必填。以微秒为单位用BIGINT类型表示的时间值。BIGINT类型。可以通过TO_TIME函数构造。
在MaxCompute 1.0数据类型版本下,如果参数为STRING或DOUBLE类型,则会被隐式转换为BIGINT类型后参与运算。
date_part:必填。指定截断的时间单位。STRING类型常量。该参数取值如下:
MICROSECOND/MICROS/ff6:如果使用此粒度,时间值不会被截断,因为微秒是时间表示的最小单位。MILLISECOND/MILLIS/ff3:截断到最近的、小于或等于当前值的毫秒级别。例如:时间为15:30:00.123456,截断到毫秒后结果为15:30:00.123。SECOND/SS:截断到最接近的、小于或等于当前值的秒级别。例如:时间为15:30:00.123456,截断到秒后结果为15:30:00。MINUTE/MI:截断到最接近的、小于或等于当前值的分钟级别。例如:时间为15:30:45.123456,截断到分钟后结果为15:30:00。HOUR/HH:截断到最接近的、小于或等于当前值的小时级别。例如:时间为15:45:30.123456,截断到小时后结果为15:00:00。
返回值说明
返回BIGINT类型,以微秒为单位用BIGINT类型表示的时间值。返回规则如下:
time非BIGINT类型时,返回报错。
date_part为非常量、不支持的格式或其他类型时,返回报错。
time或date_part值为NULL时,返回NULL。
使用示例
基本示例
示例1:以微秒'ff6'和毫秒'ff3'为粒度进行时间值截取。
-- 按微秒 ff6 为粒度截取,返回1234567890。 SELECT TIME_TRUNC(1234567890, 'ff6'); -- 按毫秒 ff3 为粒度截取,返回 1234567000。 SELECT TIME_TRUNC(1234567890, 'ff3');示例2:以小时'HOUR'、分钟'MINUTE' 和秒'SECOND'为粒度进行时间值截取,然后使用FORMAT_TIME函数将返回的BIGINT类型的时间值,转换为指定format时间格式的STRING类型时间。
-- 将时间'15:31:38.776'分别按不同粒度截断,并格式化输出。 -- 按小时HOUR为粒度截取,返回15:00:00。 SELECT FORMAT_TIME( TIME_TRUNC(TO_TIME('15:31:38.776', 'HH:MI:SS.ff3'), 'HOUR'), '%H:%M:%S' ) AS truncated_hour -- 按分钟MINUTE为粒度截取,返回15:31:00。 SELECT FORMAT_TIME( TIME_TRUNC(TO_TIME('15:31:38.776', 'HH:MI:SS.ff3'), 'MINUTE'), '%H:%M:%S' ) AS truncated_minute; -- 按秒SECOND为粒度截取,返回15:31:38。 SELECT FORMAT_TIME( TIME_TRUNC(TO_TIME('15:31:38.776', 'HH:MI:SS.ff3'), 'SECOND'), '%H:%M:%S' ) AS truncated_second;示例3:NULL输入处理。
-- 返回NULL。 SELECT TIME_TRUNC(NULL, 'SECOND'); -- date_part为NULL,返回NULL。 SELECT TIME_TRUNC(TO_TIME(12,00,00), NULL);
相关函数
TIME_TRUNC函数属于时间函数,更多时间计算、时间转换的相关函数请参见日期与时间函数。