개발이야기/PostgreSQL

[PostgreSQL] DATE_PART 함수 사용법, 예제, 활용하기

후린개발자 2025. 2. 5.
반응형

PostgreSQL은 날짜와 시간 데이터를 다룰 때 유용한 함수들을 제공합니다. 그중 DATE_PART 함수는 날짜나 시간 데이터에서 특정 부분(연도, 월, 일 등)을 추출하는 데 사용됩니다. 이 함수는 데이터 분석, 보고서 생성, 그리고 시간 관련 쿼리 작성 시 매우 유용합니다.


1. DATE_PART 함수의 기본 문법

DATE_PART('필드', 소스)

-필드(field): 추출하고자 하는 날짜 또는 시간의 구성 요소입니다. 예: 'year', 'month', 'day', 'hour', 'minute', 'second' 등.

-소스(source): 날짜 또는 시간 데이터입니다. DATE, TIMESTAMP, TIMESTAMPTZ와 같은 데이터 유형을 지원합니다.

-예시
SELECT 
    DATE_PART('year', '2025-01-15'::DATE) AS year,
    DATE_PART('month', '2025-01-15'::DATE) AS month,
    DATE_PART('day', '2025-01-15'::DATE) AS day;

 

[PostgreSQL] DATE_PART 함수 사용법, 예제, 활용하기 - undefined - undefined - 1. DATE_PART 함수의 기본 문법


2. 지원하는 필드 목록

DATE_PART에서 지원하는 주요 필드 목록은 다음과 같습니다

필드설명
year연도
month
day
hour시(hour)
minute
second
quarter분기 (1, 2, 3, 4)
dow요일 (0: 일요일 ~ 6: 토요일)
isodowISO 기준 요일 (1: 월요일 ~ 7: 일요일)
week연간 몇 번째 주인지
epoch1970-01-01 00:00:00 UTC부터 경과한 초

 

3. 예제

(1) 특정 연도와 월을 추출하기

SELECT DATE_PART('year', now()) AS current_year,
       DATE_PART('month', now()) AS current_month;

 

[PostgreSQL] DATE_PART 함수 사용법, 예제, 활용하기 - undefined - undefined - 3. 예제

(2) 분기 구하기

SELECT DATE_PART('quarter', '2025-05-15'::DATE) AS quarter;
[PostgreSQL] DATE_PART 함수 사용법, 예제, 활용하기 - undefined - undefined - 3. 예제

(3) 요일 구하기

SELECT DATE_PART('dow', '2025-01-15'::DATE) AS day_of_week;
[PostgreSQL] DATE_PART 함수 사용법, 예제, 활용하기 - undefined - undefined - 3. 예제

(4) 타임스탬프에서 시간과 분 추출하기

SELECT DATE_PART('hour', '2025-01-15 14:35:00'::TIMESTAMP) AS hour,
       DATE_PART('minute', '2025-01-15 14:35:00'::TIMESTAMP) AS minute;

 

[PostgreSQL] DATE_PART 함수 사용법, 예제, 활용하기 - undefined - undefined - 3. 예제


 

4. 활용 사례

(1) 월별 데이터 집계

SELECT DATE_PART('month', order_date) AS order_month,
       COUNT(*) AS total_orders
FROM orders
GROUP BY DATE_PART('month', order_date)
ORDER BY order_month;

 

(2) 특정 요일의 데이터 필터링

SELECT *
FROM events
WHERE DATE_PART('dow', event_date) = 0; -- 일요일 데이터만 필터링

 

(3) 분기별 매출 집계

SELECT DATE_PART('quarter', sales_date) AS sales_quarter,
       SUM(amount) AS total_sales
FROM sales
GROUP BY sales_quarter
ORDER BY sales_quarter;
반응형

댓글