TIME_SUB函數用於按照指定的時間單位date_part,在指定的時間值time上減少指定的幅度delta。
命令格式
BIGINT TIME_SUB(BIGINT <time>, BIGINT <delta>, STRING <date_part>)
-- 標準樣本。
-- 返回1233995。
SELECT TIME_SUB(1234000, 5, 'MICROS');參數說明
time:必填。以微秒為單位用BIGINT類型表示的時間值。BIGINT類型。可以通過TO_TIME函數構造。
在MaxCompute 1.0資料類型版本下,如果參數為STRING或DOUBLE類型,則會被隱式轉換為BIGINT類型後參與運算。
delta:必填。修改幅度。BIGINT類型。如果delta大於0,則進行減運算,否則進行增運算。
在MaxCompute 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'為單位的減法運算。
-- 返回1233995。 SELECT TIME_SUB(1234000, 5, 'ff6');樣本2:對時間值進行以小時'hour'為單位的減法運算。
-- 返回38380000000。 SELECT TIME_SUB(TO_TIME('15:39:40','%H:%M:%S'), 5, 'hour');樣本3:對時間值進行以毫秒'millis'為單位的減法運算。
-- 開啟MaxCompute 2.0資料類型版本。 SET odps.sql.type.system.odps2 = true; -- 返回56379995000。 SELECT TIME_SUB(TO_TIME(TIMESTAMP '2025-03-27 15:39:40'), 5, 'millis');樣本4:使用FORMAT_TIME函數將返回的BIGINT類型的時間值,轉換為指定format時間格式的STRING類型時間。
-- 返回15:39:45。 SELECT FORMAT_TIME(TIME_SUB(TO_TIME(15,39,40), -5, 'second'),'%H:%M:%S'); -- 設定資料類型版本為2.0。 SET odps.sql.type.system.odps2 = true; --返回 15:44:40.123。 SELECT FORMAT_TIME(TIME_SUB(TO_TIME(TIMESTAMP_NTZ '2025-03-27 15:39:40.123456'),-5,'minute'),'%H:%M:%S.ff3');樣本5:NULL輸入處理。
-- 任意參數為NULL時返回NULL。 -- 返回NULL。 SELECT TIME_SUB(NULL, 10, 'SECOND'); -- 返回NULL。 SELECT TIME_SUB(1234000, NULL, 'ff6'); -- 返回NULL。 SELECT TIME_SUB(1234000, 5, NULL);
相關函數
如果需要將TIME_SUB函數返回的BIGINT類型時間值,轉換為指定時間格式的STRING類型時間,可參考FORMAT_TIME函數。
TIME_SUB函數屬於時間函數,更多時間計算、時間轉換的相關函數請參見日期與時間函數。