날짜/시간 데이터 추출과 변환

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
PostgreSQL에서 데이터 조작을 위한 함수

날짜/시간 데이터 추출과 변환

  • 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       |
+---------+
PostgreSQL에서 데이터 조작을 위한 함수

타임스탬프에서 하위 필드 추출

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  |
+--------------------------------------------------------------------------------+
PostgreSQL에서 데이터 조작을 위한 함수

타임스탬프에서 하위 필드 추출

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         |
+---------------------------------+
PostgreSQL에서 데이터 조작을 위한 함수

DATE_TRUNC()로 타임스탬프 절삭

DATE_TRUNC() 함수는 timestamp 또는 interval 자료형을 잘라냅니다.

  • 타임스탬프 '2005-05-21 15:30:30'을 연 단위로 절삭
SELECT DATE_TRUNC('year', TIMESTAMP '2005-05-21 15:30:30');
결과: 2005-01-01 00:00:00
  • 타임스탬프 '2005-05-21 15:30:30'을 월 단위로 절삭
SELECT DATE_TRUNC('month', TIMESTAMP '2005-05-21 15:30:30');
결과: 2005-05-01 00:00:00
PostgreSQL에서 데이터 조작을 위한 함수

연습해 봅시다!

PostgreSQL에서 데이터 조작을 위한 함수

Preparing Video For Download...