- 카테고리:
TO_TIME , TIME¶
입력 식을 시간으로 변환합니다. 입력이 NULL이면 NULL을 반환합니다.
- 참고 항목:
구문¶
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 epoch 시작 후의 초, 밀리초, 마이크로초 또는 나노초 단위 수로 처리됩니다. 아래의 사용법 노트 를 참조하십시오.이 타임스탬프의 경우 함수는 Unix epoch 시작 후의 시간(초)을 가져옵니다. 이 함수는 모듈로 연산 을 수행하여 이 숫자를 하루의 초 수(
86400
)로 나눈 나머지를 구합니다.number_of_seconds % 86400
함수는 이 나머지를 자정 이후의 초 수로 해석합니다.
예를 들어 값이
31536002789
라고 가정하겠습니다.이 값의 크기를 기준으로, 함수는 밀리초를 시간 단위로 사용하고 값이
1971-01-01 00:00:02.789
를 나타내는지 확인합니다.함수는 이 값(
31536002
)에 대한 Unix epoch 이후의 초 수를 구합니다.함수는 그 숫자를 하루의 초 수로 나눈 나머지(
31536002 % 86400
)를 구합니다.함수는 나머지(
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보다 큰 경우, 값은 나노초로 처리됩니다.
참고
사용 중단 경고: 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 | +--------------+-------------------+-------------------------+----------------+