EXTRACT 함수로 연도 추출하기
by DataMarvin
Nov 26, 2025
Views: 32
PostgreSQL에서 날짜 데이터의 특정 부분만 뽑아내고 싶을 때가 있죠. 오늘은 EXTRACT 함수로 날짜에서 연도, 월, 일 등을 추출하는 방법을 알아봅니다.
EXTRACT 함수란?
EXTRACT 함수는 날짜/시간 데이터에서 원하는 부분만 숫자로 추출하는 PostgreSQL의 날짜 함수입니다. 특정 연도의 데이터만 조회하거나, 월별 집계를 할 때 매우 유용합니다.
기본 문법
EXTRACT(field FROM source)
field: 추출할 날짜 부분 (YEAR, MONTH, DAY, HOUR 등)source: 날짜/시간 타입의 컬럼 또는 값
주요 필드 종류
- 연도 추출
EXTRACT(YEAR FROM order_date)
- 월 추출 (1-12)
EXTRACT(MONTH FROM order_date)
- 일 추출 (1-31)
EXTRACT(DAY FROM order_date)
*- 요일 추출 (0=일요일, 6=토요일
EXTRACT(DOW FROM order_date)
- 분기 추출 (1-4)
EXTRACT(QUARTER FROM order_date)
실전 활용 예시
1. 특정 연도 데이터 필터링
SELECT * FROM orders WHERE EXTRACT(YEAR FROM order_date) = 2023;
특정 연도의 주문만 조회할 때 사용합니다. BETWEEN이나 부등호 연산자 대신 깔끔하게 연도만 비교할 수 있습니다.
2. 월별 집계
SELECT EXTRACT(MONTH FROM order_date) AS month, COUNT(*) AS order_count FROM orders WHERE EXTRACT(YEAR FROM order_date) = 2023 GROUP BY EXTRACT(MONTH FROM order_date) ORDER BY month;
같은 연도 내에서 월별 주문 건수를 확인할 수 있습니다.
3. 요일별 패턴 분석
SELECT EXTRACT(DOW FROM order_date) AS day_of_week, AVG(total_amount) AS avg_amount FROM orders GROUP BY day_of_week ORDER BY day_of_week;
요일별로 주문 금액 패턴을 분석할 수 있습니다.
WHERE 절에서 활용하기
EXTRACT 함수는 WHERE 절에서 강력한 필터링 도구가 됩니다:
- - 2023년 1분기 데이터
WHERE EXTRACT(YEAR FROM order_date) = 2023 AND EXTRACT(QUARTER FROM order_date) = 1
- 주말 주문만
WHERE EXTRACT(DOW FROM order_date) IN (0, 6)
- 특정 월의 상반기
WHERE EXTRACT(YEAR FROM order_date) = 2023 AND EXTRACT(MONTH FROM order_date) <= 6`
정렬과 함께 사용하기
추출한 날짜 요소로 정렬할 수도 있습니다:
SELECT order_id, order_date, total_amount FROM orders WHERE EXTRACT(YEAR FROM order_date) = 2023 ORDER BY order_id;
기본 키나 날짜 컬럼으로 정렬하면서, EXTRACT로 필터링한 결과를 깔끔하게 정리할 수 있습니다.
💡 핵심 포인트
- EXTRACT는 숫자를 반환: 결과가 정수형이므로 숫자 비교 연산자를 사용합니다
- WHERE 절에 활용: 복잡한 날짜 범위 대신 연도/월/일을 직접 비교할 수 있습니다
- GROUP BY와 조합: 날짜 요소별 집계 분석에 매우 유용합니다
- 인덱스 고려: EXTRACT 함수를 사용하면 날짜 인덱스를 활용하지 못할 수 있으니, 대용량 데이터에서는 날짜 범위 조건도 고려하세요`
SQL Growth
