カテゴリ:

変換関数日付と時刻の関数

TO_TIME , TIME

入力式を時刻に変換します。

こちらもご参照ください。

TRY_TO_TIME

構文

TO_TIME( <string_expr> [, <format> ] ) TO_TIME( <timestamp_expr> ) TO_TIME( '<integer>' ) TO_TIME( <variant_expr> ) TIME( <string_expr> ) TIME( <timestamp_expr> ) TIME( '<integer>' ) TIME( <variant_expr> ) 
Copy

引数

必須:

string_expr または timestamp_expr または 'integer' または variant_expr

時刻に変換される式です。

  • string_expr の場合は、時刻に変換する文字列。

  • timestamp_expr の場合は、時刻に変換するタイムスタンプ。関数は、入力値の時間部分を返します。

  • 'integer' の場合は、時刻に変換する整数を含む文字列。整数は、Unixエポック開始後の秒数、ミリ秒、マイクロ秒、またはナノ秒として扱われます。 使用上の注意 をご参照ください。

    このタイムスタンプの場合、関数はUnixエポック開始後の秒数を取得します。この関数は、 モジュロ演算 を実行して、この数値を1日の秒数(86400)で割った余りを取得します。

    number_of_seconds % 86400

    関数は、この残りを午前0時からの秒数として解釈します。

    たとえば、値が '31536002789' であるとします。

    1. この値の大きさに基づいて、関数は時間の単位としてミリ秒を使用し、値が 1971-01-01 00:00:02.789 を表していると判断します。

    2. この関数は、この値(31536002)のUnixエポック後の秒数を取得します。

    3. この関数は、その数値を1日の秒数(31536002 % 86400)で割った余りを取得します。

    4. この関数は、残り(2)を午前0時からの秒数として使用します。結果の時間は 00:00:02 です。

  • variant_expr の場合:

    • VARIANT に文字列が TIME 形式(HH:MI:SS など)で含まれている場合は、文字列変換が実行されます。

    • VARIANT に文字列がINTEGER 形式で含まれている場合は、文字列変換が実行され、値は午前0時からの秒数として扱われます(必要に応じてモジュラス86400)。

    • VARIANT に JSON のNULL値が含まれていると、出力は NULL になります。

他のすべての値については、変換エラーが生成されます。

オプション:

format

string_expr または AUTO の時間形式指定子。これは、Snowflakeが使用する形式を自動的に検出することを指定します。詳細については、 変換関数の日付と時刻の形式 をご参照ください。

デフォルト: TIME_INPUT_FORMAT セッションパラメーターの現在の値(デフォルトは AUTO)

戻り値

戻り値のデータ型は TIME です。入力が NULL の場合は NULL を返します。

使用上の注意

  • 出力における時間の表示形式は、 TIME_OUTPUT_FORMAT セッションパラメーター(デフォルト HH24:MI:SS)によって決定されます。

  • 入力パラメーターの形式が整数を含む文字列の場合、値の測定単位(秒、マイクロ秒、ミリ秒、またはナノ秒)は次のように決定されます。

  • 文字列が整数に変換された後、Unixエポックの開始後の秒数、ミリ秒、マイクロ秒、またはナノ秒として整数が扱われます(1970-01-01 00:00:00.000000000 UTC)。

    • 整数が31536000000(1年のミリ秒数)より小さい場合、値は秒数として扱われます。

    • 値が31536000000以上で31536000000000未満の場合、値はミリ秒として扱われます。

    • 値が31536000000000以上で31536000000000000より小さい場合、値はマイクロ秒として扱われます。

    • 値が31536000000000000以上の場合、値はナノ秒として扱われます。

  • 複数の行が評価される場合(例: 入力が複数の行を含むテーブルの列名である場合)、値が秒、ミリ秒、マイクロ秒、またはナノ秒を表しているかどうかを判断するために、各値が個別に検査されます。

  • TO_TIME 関数とは異なり、 TIME 関数はオプションの format パラメーターをサポートしていません。

これらの例では、 TO_TIME と TIME 関数を使用しています。

SELECT TO_TIME('13:30:00'), TIME('13:30:00'); 
Copy
+---------------------+------------------+ | TO_TIME('13:30:00') | TIME('13:30:00') | |---------------------+------------------| | 13:30:00 | 13:30:00 | +---------------------+------------------+ 
SELECT TO_TIME('13:30:00.000'), TIME('13:30:00.000'); 
Copy
+-------------------------+----------------------+ | TO_TIME('13:30:00.000') | TIME('13:30:00.000') | |-------------------------+----------------------| | 13:30:00 | 13:30:00 | +-------------------------+----------------------+ 

この例では、 TO_TIME 関数を使用して、デフォルトのコロン以外のフィールド区切り文字を処理する方法を示します。この例では、時間と分、分と秒の区切り文字としてピリオド文字を使用しています。

SELECT TO_TIME('11.15.00', 'HH24.MI.SS'); 
Copy
+-----------------------------------+ | TO_TIME('11.15.00', 'HH24.MI.SS') | |-----------------------------------| | 11:15:00 | +-----------------------------------+ 

この例は、 TO_TIME 関数が整数を含む文字列を解釈する方法を示しています。

CREATE OR REPLACE TABLE demo1_time ( description VARCHAR, value VARCHAR -- string rather than bigint ); INSERT INTO demo1_time (description, value) VALUES ('Seconds', '31536001'), ('Milliseconds', '31536002400'), ('Microseconds', '31536003600000'), ('Nanoseconds', '31536004900000000'); 
Copy
SELECT description, value, TO_TIMESTAMP(value), TO_TIME(value) FROM demo1_time ORDER BY value; 
Copy
+--------------+-------------------+-------------------------+----------------+ | DESCRIPTION | VALUE | TO_TIMESTAMP(VALUE) | TO_TIME(VALUE) | |--------------+-------------------+-------------------------+----------------| | Seconds | 31536001 | 1971-01-01 00:00:01.000 | 00:00:01 | | Milliseconds | 31536002400 | 1971-01-01 00:00:02.400 | 00:00:02 | | Microseconds | 31536003600000 | 1971-01-01 00:00:03.600 | 00:00:03 | | Nanoseconds | 31536004900000000 | 1971-01-01 00:00:04.900 | 00:00:04 | +--------------+-------------------+-------------------------+----------------+