TO_DATE , DATE

TO_DATE , DATE

입력 표현식을 날짜(date)로 변환하는 변환 함수예요. 문자열이나 타임스탬프를 날짜만 떼어내고 싶을 때 씁니다. TO_DATE와 DATE는 동일하게 동작해요.

출처: Snowflake SQL Reference

본문

입력 유형에 따라 반환 결과가 달라져요.

  • 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');

더 알아보기 (Learn more)