TIME_TRUNC

将时间time按照datepart指定的时间单位进行截取,返回以微秒为单位用BIGINT类型表示的时间值。

命令格式

BIGINT TIME_TRUNC(BIGINT <time>, STRING <datepart>)

参数说明

参数

描述

time

必填,BIGINT类型。以微秒为单位用BIGINT类型表示的时间值,您可以用TO_TIME函数进行构造。

说明

MaxCompute 1.0数据类型版本下,如果参数为STRINGDOUBLE类型,则会被隐式转换为BIGINT类型后参与运算。

datepart

必填,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类型表示的时间值。返回规则如下:

  • timeBIGINT类型时,返回报错。

  • timedatepart值为NULL时,返回NULL。

使用示例

示例1:截取粒度分别为微秒ff6和毫秒ff3

TIME_TRUNC函数分别以微秒ff6、毫秒ff3为粒度,截取BIGINT类型的时间值1234567890。结果返回以微秒为单位的BIGINT类型时间值。

--以微秒ff6为粒度截取,返回 1234567890微秒
SELECT TIME_TRUNC(1234567890L,'ff6');

--以毫秒ff3为粒度截取,返回 1234567000微秒
SELECT TIME_TRUNC(1234567890L,'ff3');

示例2:截取粒度分别为小时HOUR、分钟MINUTE和秒SECOND

TIME_TRUNC函数分别以小时HOUR、分钟MINUTE、秒SECOND为粒度,截取由TO_TIME函数构造的BIGINT类型时间值。然后使用FORMAT_TIME函数将其返回结果(BIGINT时间值)转换为指定时间格式的STRING类型时间值。

--以小时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;

相关函数

TIME_TRUNC函数属于时间函数,更多时间计算、时间转换的相关函数请参见日期与时间函数