TO_MILLIS函数用于将指定的日期时间值date转换为UNIX时间戳(代表从 1970年1月1日 00:00:00 UTC 开始,所经过的毫秒数),返回一个BIGINT类型的时间戳。
命令格式
BIGINT TO_MILLIS(DATETIME|TIMESTAMP|TIMESTAMP_NTZ <date>);
-- 标准示例。
-- 返回1617174900000。
SELECT TO_MILLIS(DATETIME '2021-03-31 15:15:00');参数说明
date:必填。日期值。DATETIME、TIMESTAMP或TIMESTAMP_NTZ类型。
返回值说明
返回BIGINT类型。表示从1970-01-01 00:00:00 UTC到date所经过的总毫秒数(基于 UTC 时区计算)。返回规则如下:
使用示例
示例1:将DATETIME值转换为以毫秒为单位用BIGINT类型表示的UNIX时间戳。
-- 返回1743405300000。 SELECT TO_MILLIS(DATETIME '2025-03-31 15:15:00');示例2:将TIMESTAMP时间戳转换为以毫秒为单位用BIGINT类型表示的UNIX时间戳。
-- 设置数据类型版本为2.0。 SET odps.sql.type.system.odps2 = true; -- TIMESTAMP 包含毫秒部分。 -- 返回1736524800123。 SELECT TO_MILLIS(TIMESTAMP '2025-01-11 00:00:00.123'); -- 转换时,秒的小数部分截断后六位,仅保留三位。 -- 返回1736524800123。 SELECT TO_MILLIS(TIMESTAMP '2025-01-11 00:00:00.123456789');示例3:将TIMESTAMP_NTZ时间戳转换为以毫秒为单位用BIGINT类型表示的UNIX时间戳。
-- 设置数据类型版本为2.0。 SET odps.sql.type.system.odps2 = true; -- 返回1740817815123。 SELECT TO_MILLIS(TIMESTAMP_NTZ '2025-03-01 08:30:15.123');示例4:NULL输入处理。
-- 设置数据类型版本为1.0。 SET odps.sql.type.system.odps2 = false; -- 返回NULL。 SELECT TO_MILLIS(NULL); -- 设置数据类型版本为2.0。 SET odps.sql.type.system.odps2 = true; -- 返回报错。 SELECT TO_MILLIS(NULL);
相关函数
TO_MILLIS函数属于日期函数,更多日期计算、日期转换的相关函数请参见日期函数。
该文章对您有帮助吗?