この関数は、日付または時刻の値を 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` 型のいずれかです。
MaxCompute V1.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' の場合、この関数は
yyyyフォーマットで値を返します。date_part が 'month' の場合、関数は
yyyy-mmフォーマットの値を返します。date_part が 'day' の場合、関数は
yyyy-mm-ddフォーマットで値を返します。date_part が 'hour' の場合、関数は
yyyy-mm-dd hh:mm:ssフォーマットで値を返します。
返品には、以下のルールが適用されます:
date のデータ型が `DATE`、`DATETIME`、`TIMESTAMP`、または `TIMESTAMP_NTZ` でない場合、エラーが返されます。
date_part が `NULL` の場合、エラーが返されます。
例
例 1:入力が `DATETIME` 型の値の場合
例えば、現在のセッションまたはプロジェクトのタイムゾーンが UTC+8 で、ローカルタイムが `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_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 プロジェクトのデータ型エディションを V1.0 に設定する必要があります。これにより、値が計算のために暗黙的に `DATETIME` 型に変換されます。そうしない場合、エラーが返されます。
-- 現在のセッションまたはプロジェクトのタイムゾーンは UTC+8 です。 SET odps.sql.timezone=Asia/Shanghai; -- データ型エディションを V1.0 に設定します。 SET odps.sql.type.system.odps2=false; -- 時刻はまず UTC に変換され、次に時間に切り捨てられます。 SELECT TRUNC_TIME('2025-06-03 15:30:30','hour'); -- 次の結果が返されます。 +------------+ | _c0 | +------------+ | 2025-06-03 07:00:00 | +------------+
関連関数
TRUNC_TIME 関数は日付関数です。日付計算関数と日付変換関数の詳細については、「日付関数」をご参照ください。