TO_DATE , DATE
TO_DATE , DATE
입력 표현식을 날짜(date)로 변환하는 변환 함수예요. 문자열이나 타임스탬프를 날짜만 떼어내고 싶을 때 씁니다. TO_DATE와 DATE는 동일하게 동작해요.
본문
입력 유형에 따라 반환 결과가 달라져요.
VARCHAR표현식이면 문자열을 날짜로 변환한 결과를 반환해요.TIMESTAMP표현식이면 타임스탬프에서 날짜 부분을 추출해요.VARIANT표현식이면, 문자열이 들어 있으면 문자열 변환을, 날짜가 들어 있으면 그 값을 그대로 유지하고, JSON null이 들어 있으면NULL을 반환해요.NULL입력이면NULL을 반환해요.- 그 외 모든 값은 변환 오류를 만들어요.
TO_DATE( <string_expr> [, <format> ] )
TO_DATE( <timestamp_expr> )
TO_DATE( '<integer>' )
TO_DATE( <variant_expr> )
DATE( <string_expr> [, <format> ] )
DATE( <timestamp_expr> )
DATE( '<integer>' )
DATE( <variant_expr> )
인자 — 다음 중 하나가 필요해요.
string_expr: 날짜를 추출할 문자열. 예:'2024-01-31'timestamp_expr:TIMESTAMP표현식. 값의 날짜 부분만 추출돼요.'integer': 정수를 담은 문자열로 평가되는 표현식. 값의 크기에 따라 초·밀리초·마이크로초·나노초로 해석될 수 있어요.variant_expr:VARIANT타입 표현식. 날짜를 추출할 문자열, 날짜, 또는 초·밀리초 수를 나타내는 정수 문자열 중 하나를 포함해야 해요.TO_DATE는TIMESTAMP값을 받지만 VARIANT 안의TIMESTAMP값은 받지 않아요.
선택 인자 — format: string_expr의 날짜 형식 지정자 또는 AUTO(Snowflake가 형식을 자동 감지). 기본값은 DATE_INPUT_FORMAT 세션 파라미터(기본 AUTO)예요.
반환 타입은 DATE예요. 입력이 NULL이면 NULL을 반환해요.
사용 메모
- 출력에서 날짜의 표시 형식은
DATE_OUTPUT_FORMAT세션 파라미터(기본YYYY-MM-DD)로 결정돼요. - 입력 파라미터가 정수를 담은 문자열이라면, 정수로 변환된 뒤 Unix epoch(1970-01-01 00:00:00.000000000 UTC) 이후의 초·밀리초·마이크로초·나노초 수로 취급돼요.
- 31536000000(1년의 밀리초 수)보다 작으면 초로 취급.
- 31536000000 이상 31536000000000 미만이면 밀리초.
- 31536000000000 이상 31536000000000000 미만이면 마이크로초.
- 31536000000000000 이상이면 나노초.
- 여러 행을 평가할 때(예: 입력이 여러 행을 가진 테이블의 컬럼 이름일 때) 각 값은 초·밀리초·마이크로초·나노초 중 무엇인지 독립적으로 판정돼요.
예시 — 기본 사용:
SELECT TO_DATE('2024-05-10'), DATE('2024-05-10');
+-----------------------+--------------------+
| TO_DATE('2024-05-10') | DATE('2024-05-10') |
|-----------------------+--------------------|
| 2024-05-10 | 2024-05-10 |
+-----------------------+--------------------+
타임스탬프에서 날짜를 추출해 볼게요. TO_DATE는 TIMESTAMP 값을 받지만 시간 정보(시·분 등)는 버려요.
CREATE OR REPLACE TABLE date_from_timestamp(ts TIMESTAMP);
INSERT INTO date_from_timestamp(ts)
VALUES (TO_TIMESTAMP('2024.10.02 04:00:00', 'YYYY.MM.DD HH:MI:SS'));
SELECT TO_DATE(ts) FROM date_from_timestamp;
+-------------+
| TO_DATE(TS) |
|-------------|
| 2024-10-02 |
+-------------+
서로 다른 입력 형식을 지정할 수도 있어요.
SELECT TO_DATE('2024.05.10', 'YYYY.MM.DD'), DATE('2024.05.10', 'YYYY.MM.DD');
SELECT TO_DATE('2024-05-10', 'AUTO'), DATE('2024-05-10', 'AUTO');