すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:TRUNC_TIME

最終更新日:Dec 03, 2025

この関数は、日付または時刻の値を 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 定数です。 有効な値: yearmonthday、および 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 関数は日付関数です。日付計算関数と日付変換関数の詳細については、「日付関数」をご参照ください。