EXTRACT

EXTRACT

EXTRACT()는 날짜, 간격(interval), 시간 또는 타임스탬프에서 지정한 날짜 또는 시간 부분(part)을 추출해요.

타임스탬프에서 날짜를 추출하려면 TO_DATE 함수를 사용하세요.

대안(Alternatives):

DATE_PART , HOUR / MINUTE / SECOND , YEAR / DAY / WEEK / MONTH / QUARTER

출처: Snowflake SQL Reference

본문

문법

EXTRACT( <date_or_time_part> FROM <date_interval_time_or_timestamp_expr> )
EXTRACT( <date_or_time_part> , <date_interval_time_or_timestamp_expr> )

인자

date_or_time_part

시간의 단위예요. 지원되는 날짜 및 시간 단위(Supported date and time parts)에 나열된 값 중 하나여야 해요(예: month). 값은 문자열 리터럴이거나 따옴표가 없는 값일 수 있어요(예: 'month' 또는 month). date_or_time_part가 week(또는 그 변형)일 때 출력은 WEEK_START 세션 매개변수에 따라 제어돼요. date_or_time_part가 dayofweek 또는 yearofweek(또는 그 변형)일 때 출력은 WEEK_OF_YEAR_POLICY와 WEEK_START 세션 매개변수에 따라 제어돼요. 예제를 포함한 자세한 내용은 달력 주와 평일(Calendar weeks and weekdays)을 참고하세요.

date_interval_time_or_timestamp_expr

날짜, 간격, 시간 또는 타임스탬프, 또는 그 데이터 타입 중 하나로 평가될 수 있는 표현식이에요.

반환

NUMBER 데이터 타입의 값을 반환해요.

사용 지침

  • date_interval_time_or_timestamp_expr이 연-월 간격 값일 때 지원되는 date_or_time_part 값은 year와 month예요.

  • date_interval_time_or_timestamp_expr이 일-시간 간격 값일 때 지원되는 date_or_time_part 값은 day, hour, minute, second, nanosecond예요.

  • 현재 date_interval_time_or_timestamp_expr이 DATE 값일 때 다음 date_or_time_part 값은 지원되지 않아요.

    • epoch_millisecond

    • epoch_microsecond

    • epoch_nanosecond

기타 날짜 및 시간 부분들(epoch_second 포함)은 지원돼요.

예제

타임스탬프에서 연도를 추출하도록 year 부분 지정:

SELECT EXTRACT(year FROM TO_TIMESTAMP('2024-04-10T23:39:20.123-07:00')) AS YEAR;
+------+
| YEAR |
|------|
| 2024 |
+------+

DECODE 함수와 dayofweek 부분과 함께 EXTRACT를 사용해 현재 요일의 전체 이름 반환:

SELECT DECODE(EXTRACT(dayofweek FROM SYSTIMESTAMP()),
  1, 'Monday',
  2, 'Tuesday',
  3, 'Wednesday',
  4, 'Thursday',
  5, 'Friday',
  6, 'Saturday',
  7, 'Sunday') AS DAYOFWEEK;
+-----------+
| DAYOFWEEK |
|-----------|
| Thursday  |
+-----------+

출력은 쿼리를 실행할 때 SYSTIMESTAMP 함수가 반환하는 값에 따라 달라져요. 또한 DAYNAME 함수를 사용해 지정한 날짜 또는 타임스탬프에서 요일의 세 글자 이름을 추출할 수 있어요.

더 알아보기