Trích xuất và biến đổi dữ liệu ngày/giờ

Các hàm thao tác dữ liệu trong PostgreSQL

Brian Piccolo

Sr. Director, Digital Strategy

Trích xuất và biến đổi dữ liệu ngày và giờ

Khám phá các hàm EXTRACT(), DATE_PART()DATE_TRUNC()

  • Độ chính xác timestamp giao dịch không hữu ích cho phân tích
2005-05-13 08:53:53
  • Thường cần trích xuất các phần của timestamp
2005 hoặc 5 hoặc 2 hoặc Friday
  • Hoặc chuyển đổi / cắt bớt độ chính xác để chuẩn hóa
2005-05-13 00:00:00
Các hàm thao tác dữ liệu trong PostgreSQL

Trích xuất và biến đổi dữ liệu ngày/giờ

  • 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       |
+---------+
Các hàm thao tác dữ liệu trong PostgreSQL

Trích xuất trường con từ dữ liệu timestamp

Dữ liệu giao dịch từ bảng 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  |
+--------------------------------------------------------------------------------+
Các hàm thao tác dữ liệu trong PostgreSQL

Trích xuất trường con từ dữ liệu timestamp

Dữ liệu từ bảng payment theo năm và quý

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;

Kết quả

+---------------------------------+
| quarter | year | total_payments |
|---------|------|----------------|
| 2       | 2005 | 14456.31       |
| 3       | 2005 | 52446.02       |
| 1       | 2006 | 514.18         |
+---------------------------------+
Các hàm thao tác dữ liệu trong PostgreSQL

Cắt bớt timestamp với DATE_TRUNC()

Hàm DATE_TRUNC() sẽ cắt bớt độ chính xác của kiểu timestamp hoặc interval.

  • Cắt timestamp '2005-05-21 15:30:30' theo năm
SELECT DATE_TRUNC('year', TIMESTAMP '2005-05-21 15:30:30');
Kết quả: 2005-01-01 00:00:00
  • Cắt timestamp '2005-05-21 15:30:30' theo tháng
SELECT DATE_TRUNC('month', TIMESTAMP '2005-05-21 15:30:30');
Kết quả: 2005-05-01 00:00:00
Các hàm thao tác dữ liệu trong PostgreSQL

Hãy thực hành!

Các hàm thao tác dữ liệu trong PostgreSQL

Preparing Video For Download...