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

MaxCompute:TIME_TRUNC

最終更新日:Nov 26, 2025

`TIME_TRUNC` 関数は、`time` 値を `date_part` で指定された時間単位に基づいて切り捨て、マイクロ秒単位の時刻を表す `BIGINT` 値を返します。

構文

BIGINT TIME_TRUNC(BIGINT <time>, STRING <date_part>)

-- 例
-- 1234567890 が返されます。
SELECT TIME_TRUNC(1234567890L,'ff6');

パラメーター

  • time:必須。マイクロ秒単位の時刻を表す `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 値を返します。次のルールが適用されます。

  • 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` の時刻値を指定されたフォーマットの `STRING` に変換します。

    -- 時刻 '15:31:38.776' を異なる粒度に切り捨て、出力をフォーマットします。
    -- 時に切り捨てます。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;
    
    -- 分に切り捨てます。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;
    
    -- 秒に切り捨てます。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 関数は時間関数です。時間を計算または変換するその他の関数については、「日付および時刻関数」をご参照ください。