TO_TIME , TIME
TO_TIME , TIME
입력 표현식을 시간(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 또는 integer 또는 variant_expr
시간으로 변환할 표현식이에요:
string_expr: 시간으로 변환할 문자열.timestamp_expr: 시간으로 변환할 타임스탬프. 함수는 입력 값의 시간 부분을 반환해요.integer: 시간으로 변환할 정수를 포함한 문자열. 정수는 Unix epoch 시작 이후의 초, 밀리초, 마이크로초, 나노초 수로 처리돼요. 사용 시 유의사항을 참고하세요.
이 타임스탬프에 대해 함수는 Unix epoch 시작 이후의 초 수를 구해요. 함수는 이 숫자를 하루의 초 수(86400)로 나눈 나머지를 얻기 위해 모듈로 연산을 수행해요:
number_of_seconds % 86400
함수는 이 나머지를 자정 이후의 초 수로 해석해요.
예를 들어 값이 31536002789라고 가정해요.
-
이 값의 크기에 따라 함수는 밀리초를 시간 단위로 사용하고 이 값이
1971-01-01 00:00:02.789를 나타낸다고 판단해요. -
함수는 이 값에 대한 Unix epoch 이후의 초 수(
31536002)를 구해요. -
함수는 그 숫자를 하루의 초 수로 나눈 나머지(
31536002 % 86400)를 구해요. -
함수는 나머지(
2)를 자정 이후의 초 수로 사용해요. 결과 시간은00:00:02예요. -
variant_expr:- VARIANT가 TIME 형식(예:
HH:MI:SS)의 문자열을 포함하면 문자열 변환이 수행돼요. - VARIANT가 INTEGER 형식의 문자열을 포함하면 문자열 변환이 수행되고 값이 자정 이후의 초 수(필요 시 모듈러스 86400)로 처리돼요.
- VARIANT가 JSON null 값을 포함하면 출력은 NULL이에요.
- VARIANT가 TIME 형식(예:
그 외의 모든 값에 대해서는 변환 오류가 발생해요.
선택:
format
string_expr에 대한 시간 형식 지정자 또는 AUTO. AUTO는 Snowflake가 사용할 형식을 자동으로 감지하도록 지정해요. 자세한 내용은 Date and time formats in conversion functions를 참고하세요.
기본값: TIME_INPUT_FORMAT 세션 파라미터의 현재 값(기본 AUTO).
반환 값
반환 값의 데이터 타입은 TIME이에요. 입력이 NULL이면 NULL을 반환해요.
사용 시 유의사항
- 출력에서 시간의 표시 형식은 TIME_OUTPUT_FORMAT 세션 파라미터(기본
HH24:MI:SS)에 의해 결정돼요. - 입력 파라미터의 형식이 정수를 포함한 문자열이면 값의 측정 단위(초, 마이크로초, 밀리초, 나노초)는 다음과 같이 결정돼요:
- 문자열이 정수로 변환된 후 그 정수는 Unix epoch(1970-01-01 00:00:00.000000000 UTC) 시작 이후의 초, 밀리초, 마이크로초 또는 나노초 수로 처리돼요.
- 정수가 31536000000(한 해의 밀리초 수)보다 작으면 값은 초 수로 처리돼요.
- 값이 31536000000 이상이고 31536000000000보다 작으면 값은 밀리초로 처리돼요.
- 값이 31536000000000 이상이고 31536000000000000보다 작으면 값은 마이크로초로 처리돼요.
- 값이 31536000000000000 이상이면 값은 나노초로 처리돼요.
- 한 행보다 많은 행이 평가되면(예: 입력이 한 행보다 많은 테이블의 컬럼 이름인 경우) 값이 초, 밀리초, 마이크로초, 나노초 중 무엇을 나타내는지 각 값이 독립적으로 조사돼요.
- TO_TIME 함수와 달리 TIME 함수는 선택적
format파라미터를 지원하지 않아요.
예시
이 예시들은 TO_TIME과 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 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);
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 |
+--------------+-------------------+-------------------------+----------------+
더 알아보기 (Learn more)
- TRY_TO_TIME — 오류 없이 시간 변환 시도
- TO_TIMESTAMP — 타임스탬프 변환