TRUNC_TIME函數用於將指定的日期或時間類型資料按date_part所指定的時間單位進行截斷,返回STRING類型資料。
命令格式
STRING TRUNC_TIME(DATE|DATETIME|TIMESTAMP|TIMESTAMP_NTZ <date>, STRING <date_part>)
-- 標準樣本。
-- 返回2025-06。
SELECT TRUNC_TIME(DATETIME '2025-06-10 14:20:30', 'month');參數說明
date:必填。日期或時間戳記。支援DATE、DATETIME、TIMESTAMP或TIMESTAMP_NTZ類型。
在MaxCompute1.0資料類型版本下,輸入參數可以為STRING類型,時間格式需符合
DATETIME類型,即yyyy-mm-dd hh:mi:ss,例如2025-07-21 00:00:00,會隱式轉換為DATETIME類型後參與運算。date_part:必填。指定截斷的時間單位。STRING類型常量,忽略大小寫,支援
year(年)、month(月)、day(日)和hour(小時)。
傳回值說明
返回STRING類型。具體格式取決於date_part的取值:
對於時區相關的資料類型,如DATETIME/TIMESTAMP,TRUNC_TIME函數會先將本地時間轉換為UTC時間,然後再按照date_part進行截取計算,將結果轉換為STRING類型返回。
date_part取值為'year':返回STRING格式為
yyyy。date_part取值為'month':返回STRING格式為
yyyy-mm。date_part取值為'day':返回STRING格式為
yyyy-mm-dd。date_part取值為'hour':返回STRING格式為
yyyy-mm-dd hh:mm:ss。
返回規則如下:
date為非DATE、DATETIME、TIMESTAMP或TIMESTAMP_NTZ類型時,返回報錯。
date_part為NULL時,返回報錯。
使用樣本
樣本1:時間為DATETIME類型。
例如當前Session或者Project時區為東八區,本地時間是DATETIME '2025-06-03 07:15:08',TRUNC_TIME函數會先將本地時間轉換為UTC時間'2025-06-02 23:15:08',然後按照date_part截取計算,將結果轉換為STRING類型返回。
SET odps.sql.timezone=Asia/Shanghai; SELECT TRUNC_TIME(DATETIME '2025-06-03 07:15:08','year') AS tc_year, TRUNC_TIME(DATETIME '2025-06-03 07:15:08','month') AS tc_month, TRUNC_TIME(DATETIME '2025-06-03 07:15:08','day') AS tc_date, TRUNC_TIME(DATETIME '2025-06-03 07:15:08','hour') AS tc_hour; -- 返回結果。 +------------+------------+------------+------------+ | tc_year | tc_month | tc_date | tc_hour | +------------+------------+------------+------------+ | 2025 | 2025-06 | 2025-06-02 | 2025-06-02 23:00:00 | +------------+------------+------------+------------+樣本2:時間為DATE類型。
例如輸入時間是DATE '2025-06-10',TRUNC_TIME函數會將DATE類型資料按照date_part指定的時間單位截取後,返回STRING類型。
SELECT TRUNC_TIME(DATE '2025-06-10','year' ), TRUNC_TIME(DATE '2025-06-10','month' ), TRUNC_TIME(DATE '2025-06-10','day' ); -- 返回結果。 +------------+------------+------------+ | _c0 | _c1 | _c2 | +------------+------------+------------+ | 2025 | 2025-06 | 2025-06-10 | +------------+------------+------------+樣本3:時間為STRING類型。
例如輸入時間為STRING類型'2025-06-03 15:30:30',需要設定MaxCompute專案的資料類型版本為1.0,才會隱式轉換為DATETIME類型後參與運算,否則會報錯。
-- 當前Session或者Project時區為東八區。 SET odps.sql.timezone=Asia/Shanghai; -- 設定資料類型版本為1.0。 SET odps.sql.type.system.odps2=false; -- 時間先轉換為UTC時間,然後再按照小時'hour'進行截取計算。 SELECT TRUNC_TIME('2025-06-03 15:30:30','hour'); -- 返回結果。 +------------+ | _c0 | +------------+ | 2025-06-03 07:00:00 | +------------+
相關函數
TRUNC_TIME函數屬於日期函數,更多日期計算、日期轉換的相關函數請參見日期與時間函數。