カテゴリ:

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

TO_TIME , TIME

入力式を時刻に変換します。入力が NULLの場合、 NULLを返します。

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

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> )

引数

必須:

文字列式 または タイムスタンプ式 または バリアント式 または 統合

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

  • 文字列式 の場合、文字列を時刻に変換した結果です。

  • タイムスタンプ式 の場合、入力値の時間部分です。

  • 整数 を含む文字列の場合、尺度値は午前0時からの秒数として扱われます。尺度値が86400(1日の秒数)以上の場合、計算は係数86400で実行されます。例えば、86401は午前0時の1秒後です。

    スケーリングの詳細については、使用上の注意を参照してください。

    入力として引用符で囲まれた整数を使用することは非推奨です。

  • バリアント式 の場合:

    • バリアントに TIME 形式の文字列(「HH:MI:SS」)が含まれている場合、文字列変換が実行されます。

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

    • バリアントに JSON null 値が含まれる場合、出力は NULLです。

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

オプション:

形式

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

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

戻り値

返される値のデータ型は TIME です。

使用上の注意

  • 入力パラメーターの形式が整数を含む文字列の場合、値は以下のようにスケールされます。

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

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

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

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

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

    ご用心

    現在、負の値は常に秒として扱われます。例えば、-31536000000000000000は1970年の前の秒数として扱われますが、そのスケールは、ナノ秒として使用することを意図していることを示しています。

    この動作は将来変更される可能性があります。

    ご用心

    非推奨の警告: Snowflakeの将来のバージョンでは、文字列化された整数値をミリ秒、マイクロ秒、ナノ秒ではなく、秒として自動的に解釈する可能性があります。Snowflakeは、整数が秒として解釈されることが意図されている場合にのみ、整数を含む文字列でTO_DATE、TO_TIMEまたはTO_TIMESTAMPを呼び出すことをお勧めします。

  • 複数の行が評価される場合(例えば、入力が3つ以上の行を含むテーブルの列名である場合)、最初に処理される値は、後続のすべての値が秒、ミリ秒、マイクロ秒、またはナノ秒として扱われるかどうかを決定します。

    最初の値が31536000000以上の場合、残りの値が31536000000未満であっても、すべての値はミリ秒として扱われます。同様のロジックがマイクロ秒とナノ秒に適用されます。

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

これらの例は、 TO_TIME 関数を示しています。

SELECT TO_TIME('13:30:00'), TIME('13:30:00');
+---------------------+------------------+
| 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');
+-------------------------+----------------------+
| 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');
+-----------------------------------+
| TO_TIME('11.15.00', 'HH24.MI.SS') |
|-----------------------------------|
| 11:15:00                          |
+-----------------------------------+