TO_MILLIS

TO_MILLIS函数用于将指定的日期时间值date转换为UNIX时间戳(代表从 197011日 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、TIMESTAMPTIMESTAMP_NTZ类型。

返回值说明

返回BIGINT类型。表示从1970-01-01 00:00:00 UTCdate所经过的总毫秒数(基于 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函数属于日期函数,更多日期计算、日期转换的相关函数请参见日期函数