`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 型の値。このパラメーターは、変換する時間値を指定します。例: |
format | 必須。STRING 型の値。このパラメーターは、解析する時間値のフォーマットを指定します。時間文字列の各時間要素には、対応するフォーマット要素が必要です。たとえば、15:20 は format パラメーターでサポートされている時間部分のフォーマット要素は次のとおりです。
例: |
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 は時間関数です。時間計算および変換に使用される関数の詳細については、「日付と時刻の関数」をご参照ください。