카테고리:

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

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 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 의 경우:

    • VARIANT에 TIME 형식(예: HH:MI:SS)의 문자열이 포함된 경우, 문자열 변환이 수행됩니다.

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

    • VARIANT JSON Null 값이 포함된 경우 출력은 NULL입니다.

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

선택 사항:

format

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

기본값: TIME_INPUT_FORMAT 세션 매개 변수의 현재 값(기본값 AUTO)

반환

반환된 값의 데이터 타입은 TIME입니다. 입력이 NULL인 경우, NULL을 반환합니다.

사용법 노트

  • 출력에서 시간의 표시 형식은 TIME_OUTPUT_FORMAT 세션 매개 변수(기본값 HH24:MI:SS)에 의해 결정됩니다.

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

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