PostgreSQL에서 데이터 조작을 위한 함수
Brian Piccolo
Sr. Director, Digital Strategy
EXTRACT(), DATE_PART(), DATE_TRUNC() 함수 살펴보기
2005-05-13 08:53:53
2005 또는 5 또는 2 또는 Friday
2005-05-13 00:00:00
EXTRACT( field FROM source )
SELECT EXTRACT(quarter FROM timestamp '2005-01-24 05:12:00') AS quarter;
DATE_PART('field', source)
SELECT DATE_PART('quarter', timestamp '2005-01-24 05:12:00') AS quarter;
+---------+
| quarter |
|---------|
| 1 |
+---------+
DVD Rentals의 거래 데이터: payment 테이블
SELECT * FROM payment;
+--------------------------------------------------------------------------------+
| payment_id | customer_id | staff_id | rental_id | amount | payment_date |
|------------|-------------|----------|-----------|--------|---------------------|
| 1 | 1 | 1 | 76 | 2.99 | 2005-05-25 11:30:37 |
| 2 | 1 | 1 | 573 | 0.99 | 2005-05-28 10:35:23 |
| 3 | 1 | 1 | 1185 | 5.99 | 2005-06-15 0:54:12 |
+--------------------------------------------------------------------------------+
payment 테이블을 연도와 분기별로 집계
SELECT
EXTRACT(quarter FROM payment_date) AS quarter,
EXTRACT(year FROM payment_date) AS year,
SUM(amount) AS total_payments
FROM
payment
GROUP BY 1, 2;
결과
+---------------------------------+
| quarter | year | total_payments |
|---------|------|----------------|
| 2 | 2005 | 14456.31 |
| 3 | 2005 | 52446.02 |
| 1 | 2006 | 514.18 |
+---------------------------------+
DATE_TRUNC() 함수는 timestamp 또는 interval 자료형을 잘라냅니다.
SELECT DATE_TRUNC('year', TIMESTAMP '2005-05-21 15:30:30');
결과: 2005-01-01 00:00:00
SELECT DATE_TRUNC('month', TIMESTAMP '2005-05-21 15:30:30');
결과: 2005-05-01 00:00:00
PostgreSQL에서 데이터 조작을 위한 함수