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

MaxCompute:TO_TIME

最終更新日:Nov 26, 2025

`TO_TIME` 関数は、さまざまな型やフォーマットの時刻データを構築または変換し、マイクロ秒単位の `BIGINT` 型の時刻値にします。

構文

TO_TIME 関数は、次の 4 つのシグネチャをサポートしています。必要なシグネチャを選択できます。

  • シグネチャ 1: 指定された format に基づいて `STRING` 型の入力 value を解析し、マイクロ秒単位の `BIGINT` 型の時刻値を返します。

    BIGINT TO_TIME(STRING <value>, STRING <format>)
    
    -- 標準的な例。
    -- 48273000000 を返します。
    SELECT TO_TIME('13:24:33', '%H:%M:%S');
  • シグネチャ 2: 時間、分、秒の BIGINT 値を使用して、マイクロ秒単位の BIGINT 型の時間値を構築します。

    BIGINT TO_TIME(BIGINT <hour>, BIGINT <minute>, BIGINT <second>)
    
    -- 標準的な例。
    -- 55800000000 を返します。
    SELECT TO_TIME(15, 30, 0);
  • シグネチャ 3: TIMESTAMP データを指定されたタイムゾーンの時間値に変換し、マイクロ秒単位の BIGINT 型の時間値を返します。

    BIGINT TO_TIME(TIMESTAMP <timestamp>[, STRING <time_zone>])
    
    -- 標準例。
    -- 55801123000 を返します。
    SELECT TO_TIME(TIMESTAMP '2019-09-01 15:30:01.123');
  • シグネチャ 4: TIMESTAMP_NTZ データをマイクロ秒単位の BIGINT 型の時間値に変換します。

    BIGINT TO_TIME(TIMESTAMP_NTZ <timestamp_ntz>)
    
    -- 標準的な例。
    -- 55801123456 を返します。
    SELECT TO_TIME(TIMESTAMP_NTZ '2025-09-01 15:30:01.123456');

パラメーター

パラメーター

説明

value

必須。STRING 型の値。このパラメーターは、変換する時間値を指定します。例: 15:20:23。

format

必須。STRING 型の値。このパラメーターは、解析する時間値のフォーマットを指定します。時間文字列の各時間要素には、対応するフォーマット要素が必要です。たとえば、15:20 は hh:mi に対応し、15:20:23 は hh:mi:ss に対応します。

format パラメーターでサポートされている時間部分のフォーマット要素は次のとおりです。

  • hh、HH、または %H: 時間。

  • mi、MI、または %M: 分。

  • ss、SS、または %S: 秒。

  • ff3: ミリ秒。この要素は、秒の小数部分に一致します。たとえば、%S.ff3 を使用して 00.123 に一致させることができます。

  • %E<number>S: 秒。精度は <number> 桁です。たとえば、%E3S を使用して 00.123 に一致させることができます。

  • %E*S: 6 桁の完全な精度の秒。例: 00.123456。

例:hh:mi:ss、HH:MI:SS、%H:%M:%S、%H:%M:%E6S、%H:%M:%E*S。

hour

必須。BIGINT 型の値。このパラメーターは、変換する時間の時を指定します。

minute

必須。BIGINT 型の値。このパラメーターは、変換する時間の分を指定します。

second

必須。BIGINT 型の値。このパラメーターは、変換する時間の秒を指定します。

timestamp

必須。TIMESTAMP 型の値。このパラメーターは、変換するタイムスタンプを指定します。

time_zone

オプション。STRING 型の値。このパラメーターはタイムゾーンを指定します。

このパラメーターを指定しない場合、現在のセッションまたはプロジェクトのタイムゾーンが使用されます。詳細については、「タイムゾーンリスト」をご参照ください。

説明

プロジェクトのタイムゾーンを変更しない場合、デフォルトのタイムゾーン UTC+08:00 が使用されます。

timestamp_ntz

必須。TIMESTAMP_NTZ 型の値。このパラメーターは、変換するタイムゾーンなしのタイムスタンプを指定します。

戻り値

この関数は BIGINT 値を返します。デフォルトでは、時間値はマイクロ秒単位で測定されます。次のルールが適用されます。

  • 入力パラメーターが TIMESTAMP または TIMESTAMP_NTZ 型の場合、日付とナノ秒の部分が削除され、返される結果はマイクロ秒単位になります。

  • value、timestamp、または timestamp_ntz パラメーターが NULL の場合、エラーが返されます。

  • hour、minute、または second パラメーターが NULL の場合、関数は NULL を返します。

  • format パラメーターが無効または NULL の場合、関数は NULL を返します。

例

シグネチャ 1:TO_TIME(STRING <value>, STRING <format>)

指定された format に基づいて `STRING` 型の入力 value を解析し、マイクロ秒単位の `BIGINT` 型の時刻値を返します。

  • 例 1:有効な format で時刻文字列を解析します。

    -- 標準フォーマット %H:%M:%S を使用して完全な時刻文字列を解析します。
    -- 48273000000 を返します。
    SELECT TO_TIME('13:24:33', '%H:%M:%S');
    
    -- Oracle スタイルのフォーマット hh:mi:ss を使用します。
    -- 46860000000 を返します。
    SELECT TO_TIME('13:01:00', 'hh:mi:ss');
    
    -- 文字列には時と分のみが含まれます。
    -- 46860000000 を返します。
    SELECT TO_TIME('13:01', 'hh:mi');
  • 例 2:ミリ秒とマイクロ秒を含む時刻文字列を解析します。

    -- 文字列には分と秒のみが含まれます。
    -- 781000000 を返します。
    SELECT TO_TIME('13:01', 'mi:ss');
    
    -- ff3 は小数点以下 3 桁の精度の秒を示します。
    -- 781123000 を返します。
    SELECT TO_TIME('13:01.123', 'mi:ss.ff3');
    
    -- %E6S は小数点以下 6 桁の精度 (マイクロ秒) の秒を示します。
    -- 48273123456 を返します。
    SELECT TO_TIME('13:24:33.123456', '%H:%M:%E6S');
    
    -- ワイルドカード文字 %E*S は、精度を自動的に検出するためにサポートされています。
    -- 48273123456 を返します。
    SELECT TO_TIME('13:24:33.123456', '%H:%M:%E*S');
  • 例 3:無効または不一致の format を処理します。

    -- フォーマットでは、%h は無効なプレースホルダーです。%H を使用する必要があります。
    -- NULL を返します。
    SELECT TO_TIME('13:24:33', '%h:%m:%s');
  • 例 4:NULL 入力を処理します。

    -- フォーマットが NULL です。
    -- NULL を返します。
    SELECT TO_TIME('13:24:33', NULL);

シグネチャ 2:TO_TIME(BIGINT <hour>, BIGINT <minute>, BIGINT <second>)

時、分、秒の `BIGINT` 値を使用して、マイクロ秒単位の `BIGINT` 型の時刻値を構築します。

  • 例 1:有効なパラメーターを渡して時刻値を構築します。

    -- 標準フォーマット %H:%M:%S を使用して完全な時刻文字列を解析します。
    -- 48273000000 を返します。
    SELECT TO_TIME('13:24:33', '%H:%M:%S');
    
    -- Oracle スタイルのフォーマット hh:mi:ss を使用します。
    -- 46860000000 を返します。
    SELECT TO_TIME('13:01:00', 'hh:mi:ss');
    
    -- 入力文字列には時と分のみが含まれます。
    -- 46860000000 を返します。
    SELECT TO_TIME('13:01', 'hh:mi');
  • 例 2:パラメーターが不足しているため失敗します。

    -- 2 つのパラメーターしか渡されておらず、関数のシグネチャと一致しません。
    -- NULL を返します。
    SELECT TO_TIME(15, 30);
  • 例 3:NULL 入力を処理します。

    -- いずれかのパラメーターが NULL の場合、関数は NULL を返します。
    -- NULL を返します。
    SELECT TO_TIME(15, 30, NULL);
    
    -- NULL を返します。
    SELECT TO_TIME(15, NULL, 00);
    
    -- NULL を返します。
    SELECT TO_TIME(NULL, 30, 00);

シグネチャ 3:TO_TIME(TIMESTAMP <timestamp>[, STRING <time_zone>])

`TIMESTAMP` データを指定されたタイムゾーンの時刻値に変換し、マイクロ秒単位の `BIGINT` 型の時刻値を返します。

  • 例 1:デフォルトのタイムゾーンで TIMESTAMP 値を変換します。

    -- 上海タイムゾーンの時刻 15:30:01.123 のマイクロ秒値を抽出します。
    -- 55801123000 を返します。
    SELECT TO_TIME(TIMESTAMP '2025-09-01 15:30:01.123');
  • 例 2:FORMAT_TIME と併用して、人間が判読可能な結果を取得します。

    -- TO_TIME の結果を判読可能な時刻文字列に変換します。
    -- 15:30:01.123 を返します。
    SELECT FORMAT_TIME(TO_TIME(TIMESTAMP '2025-09-01 15:30:01.123'), "%H:%M:%S.ff3");
  • 例 3:変換先のタイムゾーンを指定します。

    -- Asia/Shanghai タイムゾーンを明示的に指定します。
    -- 55801123000 を返します。
    SELECT TO_TIME(TIMESTAMP '2025-09-01 15:30:01.123', 'Asia/Shanghai');
  • 例 4:タイムゾーンをまたいだ変換を実行します。

    -- 東京は上海より 1 時間進んでいます。上海の 15:30 は東京の 16:30 です。
    -- 59401123456 を返します。
    SELECT TO_TIME(TIMESTAMP '2025-09-01 15:30:01.123456', 'Asia/Tokyo');
    
    -- バンコクは上海より 1 時間遅れています。上海の 15:30 はバンコクの 14:30 です。
    -- 52201123456 を返します。
    SELECT TO_TIME(TIMESTAMP '2025-09-01 15:30:01.123456789', 'Asia/Bangkok');

シグネチャ 4:TO_TIME(TIMESTAMP_NTZ <timestamp_ntz>)

`TIMESTAMP_NTZ` データをマイクロ秒単位の `BIGINT` 型の時刻値に変換します。

  • 例:`TIMESTAMP_NTZ` 値から直接時刻を抽出します。

    -- TIMESTAMP_NTZ はタイムゾーン変換を伴いません。時刻部分が直接抽出されます。
    -- 55801123456 を返します。
    SELECT TO_TIME(TIMESTAMP_NTZ '2025-09-01 15:30:01.123456789');

関連関数

TO_TIME は時間関数です。時間計算および変換に使用される関数の詳細については、「日付と時刻の関数」をご参照ください。