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

Chuyển đổi dấu thời gian thành giờ địa phương cho một múi giờ nhất định trong khi 'COPY .. TO ..'

Trước hết, bạn nên sử dụng timestamptz thay vì timestamp bất cứ khi nào làm việc với nhiều múi giờ. Sẽ tránh được hoàn toàn sự cố.

Chi tiết:

Bạn có thể sử dụng AT TIME ZONE xây dựng như @NuLo đề xuất , nó có thể thậm chí hoạt động, nhưng không chính xác như mô tả.

AT TIME ZONE chuyển đổi loại timestamp (timestamp without time zone ) thành timestamptz (timestamp with time zone ) và ngược lại. Biểu diễn văn bản của một timestamptz giá trị phụ thuộc vào cài đặt hiện tại múi giờ trong phiên mà bạn chạy lệnh. Hai timestamptz này giá trị giống nhau 100% (biểu thị cùng một thời điểm):

'2015-09-02 15:55:00+02'::timestamptz
'2015-09-02 14:55:00+01'::timestamptz

Nhưng phần trình bày văn bản thì không . Màn hình hiển thị cho các múi giờ khác nhau. Nếu bạn lấy chuỗi này theo nghĩa đen và đưa nó vào timestamp nhập, phần múi giờ chỉ bị bỏ qua và bạn kết thúc với khác nhau các giá trị. Do đó, nếu bạn chạy COPY của mình tuyên bố trong một phiên có cài đặt múi giờ giống như timestamp ban đầu của bạn các giá trị dành cho, hoạt động được đề xuất xảy ra để làm việc.

Tuy nhiên, cách rõ ràng là tạo đúng timestamp bắt đầu bằng cách áp dụng AT TIME ZONE hai lần :

SELECT event AT TIME ZONE 'my_target_tz' AT TIME ZONE 'my_source_tz', ...
FROM   logtable
ORDER  BY event desc;

'my_target_tz' là "múi giờ của riêng bạn" và 'my_source_tz' múi giờ của máy chủ đám mây trong ví dụ. Để đảm bảo rằng DST được tôn trọng, hãy sử dụng tên múi giờ , không phải chữ viết tắt của múi giờ. Tài liệu:

Có liên quan:

Hoặc, tốt hơn nữa, hãy sử dụng timestamptz ở mọi nơi và nó hoạt động tự động một cách chính xác.




  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ố gắng sửa đổi một ràng buộc trong PostgreSQL

  2. Sử dụng các giá trị tham số cho lược đồ và bảng trong Postgresql

  3. Lỗi khi cài đặt psycopg2 ==2.6.2

  4. Cách trích xuất giờ từ truy vấn trong postgres

  5. Làm thế nào để bạn trích dẫn chuỗi trong Postgres