全部產品
Search
文件中心

MaxCompute:TIME_ADD

更新時間:Nov 12, 2025

TIME_ADD函數用於按照指定的時間單位date_part,在指定的時間值time上增加指定的幅度delta。

命令格式

BIGINT TIME_ADD(BIGINT <time>, BIGINT <delta>, STRING <date_part>)

-- 標準樣本。
-- 返回5001234。
SELECT TIME_ADD(1234,5,'second');

參數說明

  • time:必填。以微秒為單位用BIGINT類型表示的時間值。BIGINT類型。可以通過TO_TIME函數構造。

    在1.0資料類型版本下,如果參數為STRING或DOUBLE類型,則會被隱式轉換為BIGINT類型後參與運算。

  • delta:必填。修改幅度。BIGINT類型。如果delta大於0,則進行增運算,否則進行減運算。

    在1.0資料類型版本下,如果參數為STRING或DOUBLE類型,則會被隱式轉換為BIGINT類型後參與運算。

  • date_part:必填。指定修改的時間單位。STRING類型常量。該參數支援的取值如下:

    • 小時:HOUR或hh。

    • 分鐘:MINUTE或mi。

    • 秒:SECOND或ss。

    • 毫秒:MILLIS或ff3。

    • 微秒:MICROS或ff6。

傳回值說明

返回BIGINT類型。以微秒為單位用BIGINT類型表示的時間值,返回規則如下:

  • time非BIGINT類型時,返回報錯。

  • date_part為非常量、不支援的格式或其他類型時,返回報錯。

  • time、delta或date_part值為NULL時,返回NULL。

使用樣本

  • 樣本1:對時間值進行以微秒'ff6'為單位的加法運算。

    -- 返回1239。
    SELECT TIME_ADD(1234, 5, 'ff6');
  • 樣本2:對時間值進行以毫秒'millis'為單位的加法運算。

    -- 開啟MaxCompute 2.0資料類型版本。
    SET odps.sql.type.system.odps2 = true;
    
    -- 返回56680123456。
    SELECT TIME_ADD(TO_TIME(TIMESTAMP_NTZ '2025-03-27 15:39:40.123456'), 5, 'ff3');
  • 樣本3:對時間值進行以毫秒'second'為單位的加法運算。

    -- 返回56385000000。
    SELECT TIME_ADD(TO_TIME(15,39,40),5,'second');
  • 樣本4:對時間值進行以小時'hh'為單位的加法運算。

    -- 開啟MaxCompute 2.0資料類型版本。
    SET odps.sql.type.system.odps2 = true;
    
    -- 返回74380000000。
    SELECT TIME_ADD(TO_TIME(TIMESTAMP '2025-03-27 15:39:40'), 5, 'hh');
  • 樣本5:使用FORMAT_TIME函數將返回的BIGINT類型的時間值,轉換為指定format時間格式的STRING類型時間。

    -- 返回15:44:40。
    SELECT FORMAT_TIME(TIME_ADD(TO_TIME('15:39:40','%H:%M:%S'),5,'mi'),'%H:%M:%S');
  • 樣本6:NULL輸入處理。

    -- 任意參數為NULL時返回NULL。
    -- 返回NULL。
    SELECT TIME_ADD(NULL, 5, 'second');
    
    -- 返回NULL。
    SELECT TIME_ADD(TO_TIME('15:39:40', '%H:%M:%S'), NULL, 'second');
    
    -- 返回NULL。
    SELECT TIME_ADD(TO_TIME('15:39:40', '%H:%M:%S'), 5, NULL);
    
    -- 返回NULL。
    SELECT TIME_ADD(NULL, NULL, NULL);

相關函數

TIME_ADD函數屬於時間函數,更多時間計算、時間轉換的相關函數請參見日期與時間函數。