擷取與轉換日期/時間資料

在 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');
Result: 2005-01-01 00:00:00
  • 依月份截斷時間戳 '2005-05-21 15:30:30'
SELECT DATE_TRUNC('month', TIMESTAMP '2005-05-21 15:30:30');
Result: 2005-05-01 00:00:00
在 PostgreSQL 操作資料的函式

一起來練習吧!

在 PostgreSQL 操作資料的函式

Preparing Video For Download...