カテゴリ:

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

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

引数

必須:

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

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

  • 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 の場合:

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

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

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

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

オプション:

format

string_expr または 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 を呼び出すことをお勧めします。

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

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

これらの例は、 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                          |
+-----------------------------------+

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

CREATE TABLE demo1_time (
    description VARCHAR,
    value VARCHAR -- yes, string rather than bigint
    );
+----------------------------------------+
| status                                 |
|----------------------------------------|
| Table DEMO1_TIME successfully created. |
+----------------------------------------+
INSERT INTO demo1_time (description, value) VALUES
   ('Seconds',      '31536001'),
   ('Milliseconds', '31536002400'),
   ('Microseconds', '31536003600000'),
   ('Nanoseconds',  '31536004900000000')
   ;
+-------------------------+
| number of rows inserted |
|-------------------------|
|                       4 |
+-------------------------+
SELECT
       description,
       value,
       TO_TIMESTAMP(value),
       TO_TIME(value)
    FROM demo1_time
    ORDER BY value
    ;
+--------------+-------------------+-------------------------+----------------+
| 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       |
+--------------+-------------------+-------------------------+----------------+
最上部に戻る