PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách date_trunc () hoạt động trong PostgreSQL

Trong PostgreSQL, date_trunc() hàm cắt bớt một giá trị ngày / giờ thành một độ chính xác được chỉ định.

Nó cũng có thể cắt ngắn giá trị đến một độ chính xác được chỉ định trong một múi giờ cụ thể.

Bạn có thể coi nó như một phiên bản ngày của trunc() hàm (cắt bớt số).

Cú pháp

Cú pháp như sau:

date_trunc(field, source [, time_zone ])

Ở đâu:

  • field là độ chính xác để cắt bớt giá trị đầu vào (ví dụ:month , hour , vân vân). Xem bên dưới để biết danh sách đầy đủ các giá trị được chấp nhận cho đối số này.
  • source là một biểu thức giá trị của loại dấu thời gian , dấu thời gian với múi giờ hoặc khoảng thời gian . Lưu ý rằng các giá trị thuộc loại ngày thời gian được truyền tự động tới dấu thời gian hoặc khoảng thời gian tương ứng.
  • time_zone tùy chọn có thể cung cấp đối số để chỉ định múi giờ khác.

field đối số có thể là bất kỳ đối số nào sau đây:

  • micro giây
  • mili giây
  • thứ hai
  • phút
  • giờ
  • ngày
  • tuần
  • tháng
  • quý
  • năm
  • thập kỷ
  • thế kỷ
  • thiên niên kỷ

Ví dụ cơ bản

Đây là một ví dụ để chứng minh.

SELECT date_trunc('hour', timestamp '2020-06-30 17:29:31');

Kết quả:

2020-06-30 17:00:00

Chúng ta có thể thấy rằng phần thời gian của ngày đã bị cắt bớt từ 17:29:31 đến 17:00:00 . Đó là vì tôi đã sử dụng hour cho đối số đầu tiên.

Đây là nó với các giá trị khác nhau cho đối số đầu tiên.

\x
SELECT 
  date_trunc('minute', timestamp '2020-06-30 17:29:31'),
  date_trunc('day', timestamp '2020-06-30 17:29:31'),
  date_trunc('month', timestamp '2020-06-30 17:29:31'),
  date_trunc('year', timestamp '2020-06-30 17:29:31');

Kết quả (sử dụng đầu ra dọc):

date_trunc | 2020-06-30 17:29:00
date_trunc | 2020-06-30 00:00:00
date_trunc | 2020-06-01 00:00:00
date_trunc | 2020-01-01 00:00:00

Trong trường hợp này, tôi đã sử dụng \x để cho phép hiển thị mở rộng / đầu ra dọc, để đọc kết quả dễ dàng hơn.

Với Múi giờ

Dưới đây là một ví dụ để chứng minh WITH TIME ZONE tùy chọn.

SELECT 
date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+00'),
date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+01');

Kết quả:

date_trunc | 2020-07-01 03:00:00+10
date_trunc | 2020-07-01 02:00:00+10

Múi giờ địa phương khi tôi chạy các ví dụ này là Úc / Brisbane.

Bạn cũng có thể thêm tên múi giờ đầy đủ làm đối số thứ ba.

SELECT 
date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+12', 'Pacific/Auckland'),
date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+12', 'Pacific/Auckland');

Kết quả:

date_trunc | 2020-06-30 15:00:00+10
date_trunc | 2020-06-30 15:00:00+10

Có khoảng thời gian

Dưới đây là một ví dụ sử dụng giá trị khoảng thời gian thay vì ngày.

SELECT date_trunc('hour', interval '7 days 5 hours 15 minutes');

Kết quả:

7 days, 5:00:00


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách khai báo một biến trong truy vấn PostgreSQL

  2. Giải thích về JSONB do PostgreSQL giới thiệu

  3. Làm thế nào để ghi DataFrame vào bảng postgres?

  4. Cách tạo một điểm cuối duy nhất cho thiết lập bản sao PostgreSQL của bạn bằng HAProxy

  5. Lỗi PostgreSQL:Đã tồn tại quan hệ