TIME_TRUN函數用於將時間time按照date_part指定的時間單位進行截取,返回以微秒為單位用BIGINT類型表示的時間值。
命令格式
BIGINT TIME_TRUNC(BIGINT <time>, STRING <date_part>)
-- 標準樣本。
-- 1234567890。
SELECT TIME_TRUNC(1234567890L,'ff6');參數說明
time:必填。以微秒為單位用BIGINT類型表示的時間值。BIGINT類型。可以通過TO_TIME函數構造。
在MaxCompute 1.0資料類型版本下,如果參數為STRING或DOUBLE類型,則會被隱式轉換為BIGINT類型後參與運算。
date_part:必填。指定截斷的時間單位。STRING類型常量。該參數取值如下:
MICROSECOND/MICROS/ff6:如果使用此粒度,時間值不會被截斷,因為微秒是時間表示的最小單位。MILLISECOND/MILLIS/ff3:截斷到最近的、小於或等於當前值的毫秒層級。例如:時間為15:30:00.123456,截斷到毫秒後結果為15:30:00.123。SECOND/SS:截斷到最接近的、小於或等於當前值的秒層級。例如:時間為15:30:00.123456,截斷到秒後結果為15:30:00。MINUTE/MI:截斷到最接近的、小於或等於當前值的分鐘層級。例如:時間為15:30:45.123456,截斷到分鐘後結果為15:30:00。HOUR/HH:截斷到最接近的、小於或等於當前值的小時層級。例如:時間為15:45:30.123456,截斷到小時後結果為15:00:00。
傳回值說明
返回BIGINT類型,以微秒為單位用BIGINT類型表示的時間值。返回規則如下:
time非BIGINT類型時,返回報錯。
date_part為非常量、不支援的格式或其他類型時,返回報錯。
time或date_part值為NULL時,返回NULL。
使用樣本
基本樣本
樣本1:以微秒'ff6'和毫秒'ff3'為粒度進行時間值截取。
-- 按微秒 ff6 為粒度截取,返回1234567890。 SELECT TIME_TRUNC(1234567890, 'ff6'); -- 按毫秒 ff3 為粒度截取,返回 1234567000。 SELECT TIME_TRUNC(1234567890, 'ff3');樣本2:以小時'HOUR'、分鐘'MINUTE' 和秒'SECOND'為粒度進行時間值截取,然後使用FORMAT_TIME函數將返回的BIGINT類型的時間值,轉換為指定format時間格式的STRING類型時間。
-- 將時間'15:31:38.776'分別按不同粒度截斷,並格式化輸出。 -- 按小時HOUR為粒度截取,返回15:00:00。 SELECT FORMAT_TIME( TIME_TRUNC(TO_TIME('15:31:38.776', 'HH:MI:SS.ff3'), 'HOUR'), '%H:%M:%S' ) AS truncated_hour -- 按分鐘MINUTE為粒度截取,返回15:31:00。 SELECT FORMAT_TIME( TIME_TRUNC(TO_TIME('15:31:38.776', 'HH:MI:SS.ff3'), 'MINUTE'), '%H:%M:%S' ) AS truncated_minute; -- 按秒SECOND為粒度截取,返回15:31:38。 SELECT FORMAT_TIME( TIME_TRUNC(TO_TIME('15:31:38.776', 'HH:MI:SS.ff3'), 'SECOND'), '%H:%M:%S' ) AS truncated_second;樣本3:NULL輸入處理。
-- 返回NULL。 SELECT TIME_TRUNC(NULL, 'SECOND'); -- date_part為NULL,返回NULL。 SELECT TIME_TRUNC(TO_TIME(12,00,00), NULL);
相關函數
TIME_TRUNC函數屬於時間函數,更多時間計算、時間轉換的相關函數請參見日期與時間函數。