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函數屬於時間函數,更多時間計算、時間轉換的相關函數請參見日期與時間函數。