TIME_DIFF函数用于计算时间end_time与start_time的差值,并将该差值以指定的时间单位date_part表示。
命令格式
BIGINT TIME_DIFF(BIGINT <end_time>, BIGINT <start_time>, STRING <date_part>)
-- 标准示例。
-- 返回1106600。
SELECT TIME_DIFF(1230000, 123400, 'ff6');参数说明
返回值说明
返回BIGINT类型,以微秒为单位用BIGINT类型表示的时间值。返回规则如下:
end_time或start_time非BIGINT类型时,返回报错。
如果end_time小于start_time,返回结果为负数。
end_time、start_time和date_part中有任意一个值为NULL时,返回NULL。
当date_part为非常量、不支持的格式或其他类型时,返回报错。
使用示例
示例1:对两个时间值进行以微秒‘ff6’为单位的差值计算。
-- 返回1106600。 SELECT TIME_DIFF(1230000, 123400, 'ff6');示例2:对两个使用TO_TIME函数构造的时间值,进行以毫秒‘ff3’为单位的差值计算。
-- 返回-20000。 SELECT TIME_DIFF(TO_TIME(15,39,10), TO_TIME(15,39,30), 'ff3');示例3:对两个时间值进行以秒‘second’为单位的差值计算。
-- 开启MaxCompute 2.0数据类型版本。 SET odps.sql.type.system.odps2 = true; -- 返回10。 SELECT TIME_DIFF( TO_TIME(TIMESTAMP '2025-03-27 15:39:40'), TO_TIME(TIMESTAMP '2025-03-27 15:39:30'), 'second' );示例4:对两个使用TO_TIME函数构造的时间值,进行以毫秒‘hour’为单位的差值计算。
-- 开启MaxCompute 2.0数据类型版本。 SET odps.sql.type.system.odps2 = true; -- 实际差值约2小时34分钟,向下取整为2小时。 -- 返回2。 SELECT TIME_DIFF(TO_TIME(12,14,10), TO_TIME(09,39,30), 'hour');示例5:NULL输入处理。
-- 任意参数为NULL时返回NULL。 -- 返回NULL。 SELECT TIME_DIFF(NULL, TO_TIME(12,0,0), 'minute'); -- 返回NULL。 SELECT TIME_DIFF(TO_TIME(12,0,0), NULL, 'minute'); -- 返回NULL。 SELECT TIME_DIFF(TO_TIME(12,0,0), TO_TIME(12,10,0), NULL);
相关函数
TIME_DIFF函数属于时间函数,更多时间计算、时间转换的相关函数请参见日期与时间函数。
该文章对您有帮助吗?