[SQL] DATETIME 데이터에서 EXTRACT 함수 이용하기

전도운·2024년 7월 3일
0
post-custom-banner

DATETIME 형식의 데이터에서 연/월/일 등 각 구성요소를 따로 추출하거나 데이터를 가공하여 새로운 칼럼을 만들고자 한다. 본 글에서는 이러한 경우 사용할 수 있는 EXTRACT 함수를 소개하고자 한다.

  • EXTRACT 함수

    DATE에서 지정한 UNIT을 기준으로 자료를 추출

    EXTRACT(UNIT FROM DATE)
  • 구문 예시

    SELECT EXTRACT(YEAR FROM '2019-07-02');  -> 2019
    SELECT EXTRACT(YEAR_MONTH FROM '2019-07-02 01:02:03');  -> 201907
    SELECT EXTRACT(DAY_MINUTE FROM '2019-07-02 01:02:03');  -> 20102
    SELECT EXTRACT(MICROSECOND FROM '2003-01-02 10:30:00.000123');  -> 123
  • DATE_FORMAT 함수와의 차이점

    • 비슷한 기능을 하는 함수로 DATE_FORMAT 함수를 이용할 수 있는데, 두 함수는 서로 유사하면서도 다른 점이 존재한다.
      👉 DATE_FORMAT 관련 기존 포스트 바로가기

    • DATE_FORMAT 함수는 DATE를 지정한 형식에 따라 출력하는 기능이며, EXTRACT 함수는 명칭에서 알 수 있듯이 DATE에서 지정한 단위를 추출하는 기능이다.

    • DATE_FORMAT 함수는 specifier를 이용하여 다양한 형태로 포매팅(서식지정)을 할 수 있으나 EXTRACT 함수는 year, month 등 주어진 인자만 사용하여 추출할 수 있다.
      👉 DATE_FORMAT 관련 specifier 리스트 바로가기

    • 또한 DATE_FORMAT 함수는 서식을 지정하므로 출력값이 문자(string)인 반면, EXTRACT 함수는 출력값이 숫자(number)이다. 물론, DATE_FORMAT 함수로 년/월/일을 추출하더라도 연산은 가능하다.

      EXTRACT 함수 인자
      MICROSECOND
      SECOND
      MINUTE
      HOUR
      DAY
      WEEK
      MONTH
      QUARTER
      YEAR
      SECOND_MICROSECOND
      MINUTE_MICROSECOND
      MINUTE_SECOND
      HOUR_MICROSECOND
      HOUR_SECOND
      HOUR_MINUTE
      DAY_MICROSECOND
      DAY_SECOND
      DAY_MINUTE
      DAY_HOUR
      YEAR_MONTH
  • EXTRACT 함수를 사용하면 좋은 경우

    • 월 추출 시 '01', '02'의 형태가 아닌 1, 2의 숫자형태로 추출하고 싶을 때 (MONTH)

    • 별도의 포매팅 없이 연도와 월을 동시에 표현하고 싶을 때 (YEAR_MONTH)

  • DATE_FORMAT 함수를 사용하면 좋은 경우

    • 날짜 형식을 따로 만들고 싶을 때 (2024년 07월 03일)
profile
의미 있는 한걸음을 추구합니다.
post-custom-banner

0개의 댓글