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

Postgresql date_trunc với múi giờ dịch chuyển múi giờ 1 giờ

Dự kiến ​​sẽ có hai biến thể của date_trunc :một cho timestamp và một cho timestamptz , bởi vì tài liệu nói:

Nếu bạn muốn hiểu rõ hơn về dấu thời gian và dấu thời gian, hãy đọc trước câu trả lời tuyệt vời ở đây .

Sau đó về date_trunc . Theo các thử nghiệm và cách giải thích của tôi về các câu trả lời SO khác nhau (như cái này ), mọi thứ hoạt động như thể, khi nhận được dấu thời gian, date_trunc đầu tiên chuyển đổi nó thành dấu thời gian. Chuyển đổi này trả về một dấu thời gian theo giờ địa phương. Sau đó, việc cắt bớt được thực hiện:chỉ giữ lại ngày và giảm giờ / phút / giây.

Để tránh chuyển đổi này (cảm ơn pozs), hãy cung cấp dấu thời gian (không phải dấu thời gian) cho date_trunc:

date_trunc('day', TIMESTAMPTZ '2001-07-16 23:38:40Z' at time zone 'UTC')

phần at time zone 'UTC' cho biết "chuyển đổi dấu thời gian này thành dấu thời gian theo giờ UTC" (giờ không bị ảnh hưởng bởi chuyển đổi này). Sau đó date_trunc trả về 2001-07-16 00: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ác chức năng trả về thiết lập không được phép trong CẬP NHẬT khi sử dụng Postgres 10

  2. PostgreSQL:cách cập nhật các hàng trong CTE

  3. Thu gọn các hàng thành một cột

  4. postgresql:kiểu dữ liệu cho thông báo md5?

  5. java.math.BigInteger không thể được truyền sang java.lang.Integer