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

Loại dữ liệu thích hợp để lưu trữ múi giờ là gì?

Rất tiếc, PostgreSQL không cung cấp kiểu dữ liệu múi giờ, vì vậy bạn có thể nên sử dụng text .

interval Thoạt nhìn có vẻ như là một lựa chọn hợp lý và nó thích hợp cho một số mục đích sử dụng. Tuy nhiên, nó không xem xét thời gian tiết kiệm ánh sáng ban ngày, cũng như không xem xét thực tế là các khu vực khác nhau trong cùng độ lệch UTC có các quy tắc DST khác nhau.

Không có ánh xạ 1:1 từ độ lệch UTC trở lại múi giờ.

Ví dụ:múi giờ cho Australia/Sydney (New South Wales) là UTC+10 (EST ) hoặc UTC+11 (EDT ) trong thời gian tiết kiệm ánh sáng ban ngày. Đúng, đó là từ viết tắt giống nhau EST mà Hoa Kỳ sử dụng; Các từ viết tắt của múi giờ không phải là duy nhất trong cơ sở dữ liệu tzdata, đó là lý do tại sao Pg có timezone_abbreviations cài đặt. Tệ hơn, Brisbane (Queensland) ở gần như cùng một kinh độ và ở UTC+10 EST ... nhưng không có tiết kiệm ánh sáng ban ngày, vì vậy đôi khi nó ở mức -1 bù cho New South Wales trong DST của NSW.

( Cập nhật :Gần đây hơn, Úc đã thông qua A tiền tố, vì vậy nó sử dụng AEST là từ viết tắt TZ của các tiểu bang phía đông của nó, nhưng ESTWST vẫn được sử dụng phổ biến).

Khó hiểu nhiều?

Nếu tất cả những gì bạn cần lưu trữ là UTC offset sau đó là một interval là thích hợp. Nếu bạn muốn lưu trữ một múi giờ , lưu trữ nó dưới dạng text . Thật khó để xác thực và chuyển đổi sang độ lệch múi giờ vào lúc này, nhưng ít nhất nó cũng đối phó được với DST.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tách chuỗi đã cho và chuẩn bị câu lệnh trường hợp

  2. Tôi có thể lưu trữ bao nhiêu bản ghi trong 5 MB PostgreSQL trên Heroku?

  3. Hướng dẫn sử dụng pgBouncer cho PostgreSQL

  4. Thay đổi khóa chính thành khóa chính tổng hợp

  5. Làm thế nào để chuyển đổi một db trong postgreSQL thành utf8?