카테고리:

변환 함수 , 날짜 및 시간 함수

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

인자

필수:

string_expr 또는 timestamp_expr 또는 variant_expr 또는 integer

시간으로 변환할 식:

  • string_expr 의 경우, 문자열을 시간으로 변환한 결과입니다.

  • timestamp_expr 의 경우, 입력 값의 시간 부분입니다.

  • 'integer' (정수를 포함한 문자열)의 경우, 정수는 Unix epoch 시작 후의 초, 밀리초, 마이크로초 또는 나노초 단위 수로 처리됩니다. 아래의 사용법 노트 를 참조하십시오.

    이 타임스탬프의 경우 함수는 Unix epoch 시작 후의 시간(초)을 가져옵니다. 이 함수는 모듈로 연산 을 수행하여 이 숫자를 하루의 초 수(86400)로 나눈 나머지를 구합니다.

    number_of_seconds % 86400

    함수는 이 나머지를 자정 이후의 초 수로 해석합니다.

    예를 들어 값이 31536002789 라고 가정하겠습니다.

    1. 이 값의 크기를 기준으로, 함수는 밀리초를 시간 단위로 사용하고 값이 1971-01-01 00:00:02.789 를 나타내는지 확인합니다.

    2. 함수는 이 값(31536002)에 대한 Unix epoch 이후의 초 수를 구합니다.

    3. 함수는 그 숫자를 하루의 초 수로 나눈 나머지(31536002 % 86400)를 구합니다.

    4. 함수는 나머지(2)를 자정 이후의 초 수로 사용합니다. 결과 값은 00:00:02 입니다.

    참고

    인용된 정수를 입력으로 사용하는 것은 더 이상 가능하지 않습니다.

  • variant_expr 의 경우:

    • 베리언트에 TIME 형식(〈HH:MI:SS〉)의 문자열이 포함된 경우, 문자열 변환이 수행됩니다.

    • 베리언트에 INTEGER 형식의 문자열이 포함된 경우, 문자열 변환이 수행되고 값은 자정(필요한 경우 모듈러스 86400) 이후의 초 단위 수로 처리됩니다.

    • 베리언트에 JSON null 값이 포함된 경우, 출력은 NULL입니다.

다른 모든 값의 경우, 변환 오류가 생성됩니다.

선택 사항:

format

string_expr 또는 AUTO 에 대한 시간 형식 지정자이며, 이는 사용할 형식을 Snowflake가 자동으로 감지하도록 지정합니다. 자세한 내용은 변환 함수의 날짜 및 시간 형식 섹션을 참조하십시오.

기본값: TIME_INPUT_FORMAT 세션 매개 변수의 현재 값(일반적으로 AUTO)

반환

반환된 값의 데이터 타입은 TIME 입니다.

사용법 노트

  • 입력 매개 변수의 형식이 정수를 포함한 문자열인 경우 값의 측정 단위(초, 마이크로초, 밀리초 또는 나노초)는 다음과 같이 결정됩니다.

  • 문자열이 정수로 변환된 후 정수는 Unix epoch(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         |
+---------------------+------------------+
Copy
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             |
+-------------------------+----------------------+
Copy

이 예는 TO_TIME 함수를 사용하여 기본 콜론 이외의 필드 구분 기호를 처리하는 방법을 보여줍니다(이 예에서는 마침표 문자를 시간과 분 사이, 그리고 분과 초 사이의 구분 기호로 사용함).

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

이 예제에서는 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 |
+-------------------------+
Copy
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       |
+--------------+-------------------+-------------------------+----------------+
Copy