본문 바로가기
Database/Oracle

[ORACLE] EXTRACT()로 연도 별, 월 별, 일자 별 통계 분석하는 방법

by Papa Martino V 2025. 6. 5.
728x90

오라클 EXTRACT()로 연도별, 월별, 일자별 통계 분석하는 방법
[Oracle] EXTRACT

 

Oracle SQL에서 날짜 및 시간 정보에서 특정 요소(예: 연도, 월, 일)를 분리하여 추출하고 싶을 때 EXTRACT() 함수는 매우 유용한 도구입니다. 본 블로그 글에서는 EXTRACT 함수의 문법과 주요 사용 예제, 실무 활용법까지 정리하여 제공하고자 합니다.

1. EXTRACT() 함수란?

EXTRACT() 함수는 DATE 또는 TIMESTAMP에서 특정 날짜/시간 구성 요소를 추출할 수 있는 Oracle의 내장 함수입니다.

기본 문법

EXTRACT(field FROM source)
  • field: 추출할 항목 (예: YEAR, MONTH, DAY, HOUR 등)
  • source: DATE 또는 TIMESTAMP 타입의 칼럼/값

지원되는 field 목록

  • YEAR
  • MONTH
  • DAY
  • HOUR
  • MINUTE
  • SECOND
  • TIMEZONE_HOUR
  • TIMEZONE_MINUTE

2. 기본 사용 예제

예제 1: 날짜에서 연도 추출

SELECT EXTRACT(YEAR FROM DATE '2025-06-04') AS year_part FROM dual;

예제 2: 월/일 추출

SELECT 
  EXTRACT(MONTH FROM DATE '2025-06-04') AS month_part,
  EXTRACT(DAY FROM DATE '2025-06-04') AS day_part
FROM dual;

예제 3: 현재 시간에서 시/분/초 추출

SELECT 
  EXTRACT(HOUR FROM SYSTIMESTAMP) AS hour,
  EXTRACT(MINUTE FROM SYSTIMESTAMP) AS minute,
  EXTRACT(SECOND FROM SYSTIMESTAMP) AS second
FROM dual;

3. 실무 활용 예제

3-1. 가입일 기준 연도별 고객 분석

SELECT EXTRACT(YEAR FROM signup_date) AS signup_year, COUNT(*)
FROM users
GROUP BY EXTRACT(YEAR FROM signup_date)
ORDER BY signup_year;

3-2. 월별 매출 집계

SELECT 
  EXTRACT(YEAR FROM sale_date) AS sale_year,
  EXTRACT(MONTH FROM sale_date) AS sale_month,
  SUM(amount) AS total_amount
FROM sales
GROUP BY EXTRACT(YEAR FROM sale_date), EXTRACT(MONTH FROM sale_date)
ORDER BY sale_year, sale_month;

3-3. 특정 시간대 필터링

SELECT *
FROM event_log
WHERE EXTRACT(HOUR FROM event_time) BETWEEN 9 AND 18;

4. TO_CHAR와의 차이점

많은 개발자들이 날짜 구성요소 추출 시 TO_CHAR()EXTRACT()를 혼용합니다. 두 함수는 다음과 같은 차이가 있습니다:

항목 EXTRACT() TO_CHAR()
반환 타입 숫자(NUMBER) 문자(CHAR)
주 용도 정렬, 계산, 그룹핑 출력, 포맷팅
활용도 연산 적합 디스플레이 적합

예제: EXTRACT vs TO_CHAR 비교

-- EXTRACT
SELECT EXTRACT(YEAR FROM order_date) FROM orders;

-- TO_CHAR
SELECT TO_CHAR(order_date, 'YYYY') FROM orders;

5. 오류 방지 팁

  • DATE 또는 TIMESTAMP 이외의 데이터 타입에는 사용 불가
  • 문자열 타입은 TO_DATE나 TO_TIMESTAMP로 변환 필요
  • TIMEZONE 정보가 있는 경우 정확도 확인 필수

6. 함께 사용하면 좋은 함수들

  • TO_DATE() – 문자열을 날짜로 변환
  • TO_TIMESTAMP() – 문자열을 타임스탬프로 변환
  • TRUNC() – 날짜 단위를 잘라내기
  • SYSDATE, SYSTIMESTAMP – 현재 날짜/시간

7. 요약

EXTRACT() 함수는 날짜 및 시간 데이터에서 원하는 구성요소를 추출할 수 있는 강력한 함수입니다. 특히 집계 분석, 시간대 필터링, 연산 기반 처리 등 실무에서 자주 사용되며, TO_CHAR와의 차이점을 이해하면 보다 효율적으로 활용할 수 있습니다.

참고자료

728x90