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

MaxCompute:TIME_DIFF

最終更新日:Nov 13, 2025

end_time と start_time の差を計算し、date_part で指定された時間単位で結果を返します。

構文

BIGINT TIME_DIFF(BIGINT <end_time>, BIGINT <start_time>, STRING <date_part>)

-- 標準的な例。
-- 1106600 を返します。
SELECT TIME_DIFF(1230000, 123400, 'ff6');

パラメーター

  • end_time, start_time: 必須。マイクロ秒単位の時間を表す BIGINT 値です。この値を作成するには、TO_TIME 関数を使用します。

    MaxCompute V1.0 データ型エディションでは、パラメーターが STRING 型または DOUBLE 型の場合、計算のために BIGINT 型に暗黙的に変換されます。

  • date_part: 必須。STRING 型の定数です。戻り値の時間単位を指定します。このパラメーターでは、次の値がサポートされています。

    • 時間: HOUR または hh。

    • 分: MINUTE または mi。

    • 秒: SECOND または ss。

    • ミリ秒: MILLIS または ff3。

    • マイクロ秒: MICROS または ff6。

戻り値

BIGINT 値を返します。次のルールが適用されます。

  • end_time または start_time が BIGINT 型でない場合、エラーが返されます。

  • end_time が start_time より小さい場合、負の値が返されます。

  • end_time、start_time、または date_part が null の場合、NULL が返されます。

  • date_part が定数でない、サポートされていないフォーマットである、または別のデータ型である場合、エラーが返されます。

例

  • 例 1: 2 つの時間値の差をマイクロ秒 ('ff6') 単位で計算します。

    -- 1106600 を返します。
    SELECT TIME_DIFF(1230000, 123400, 'ff6');
  • 例 2: TO_TIME 関数で作成された 2 つの時間値の差をミリ秒 ('ff3') 単位で計算します。

    -- -20000 を返します。
    SELECT TIME_DIFF(TO_TIME(15,39,10), TO_TIME(15,39,30), 'ff3');
  • 例 3: 2 つの時間値の差を秒 ('second') 単位で計算します。

    -- MaxCompute V2.0 データ型エディションを有効にします。
    SET odps.sql.type.system.odps2 = true;
    
    -- 10 を返します。
    SELECT TIME_DIFF(
    TO_TIME(TIMESTAMP '2025-03-27 15:39:40'),
    TO_TIME(TIMESTAMP '2025-03-27 15:39:30'),
    'second'
    );
  • 例 4: TO_TIME 関数で作成された 2 つの時間値の差を時間 ('hour') 単位で計算します。

    -- MaxCompute V2.0 データ型エディションを有効にします。
    SET odps.sql.type.system.odps2 = true;
    
    -- 実際の差は約 2 時間 34 分です。値は切り捨てられて 2 になります。
    -- 2 を返します。
    SELECT TIME_DIFF(TO_TIME(12,14,10), TO_TIME(09,39,30), 'hour');
  • 例 5: NULL 入力の例。

    -- いずれかのパラメーターが NULL の場合、NULL が返されます。
    -- NULL を返します。
    SELECT TIME_DIFF(NULL, TO_TIME(12,0,0), 'minute');
    -- NULL を返します。
    SELECT TIME_DIFF(TO_TIME(12,0,0), NULL, 'minute');
    -- NULL を返します。
    SELECT TIME_DIFF(TO_TIME(12,0,0), TO_TIME(12,10,0), NULL);

関連関数

TIME_DIFF は日付関数および時刻関数です。その他の日付関数および時刻関数の詳細については、「日付関数および時刻関数」をご参照ください。