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

Chèn thời gian với tiết kiệm ánh sáng ban ngày của múi giờ

thích hợp cách là không sử dụng time with time zone (lưu ý khoảng cách giữa timezone ) ở tất cả, vì nó bị phá vỡ bởi thiết kế. Nó nằm trong tiêu chuẩn SQL, vì vậy Postgres hỗ trợ loại - nhưng khuyên không để dùng nó. Thêm trong câu trả lời có liên quan này:

Vì bạn đang gặp sự cố với DST , timetz (tên viết tắt) là một lựa chọn đặc biệt tồi. Nó không được trang bị đầy đủ để đối phó với DST. Không thể biết liệu 8:00:00 là vào mùa đông hoặc mùa hè.

Sử dụng timestamp with time zone (timstamptz ) thay vì. Bạn luôn có thể loại bỏ phần ngày tháng. Chỉ cần sử dụng start_time::time để có được địa phương thời gian từ một timestamptz . Hoặc sử dụng AT TIME ZONE để chuyển sang múi giờ của bạn.

Nói chung, để tự động tính đến DST , sử dụng tên múi giờ thay vì viết tắt múi giờ. Giải thích thêm trong câu hỏi và câu trả lời liên quan này:

Trong trường hợp cụ thể của bạn, bạn có thể sử dụng America/Los_Angeles (ví dụ với timestamptz ):

INSERT INTO mytable(start_time, end_time)
VALUES
   ('1970-01-01 08:00:00 America/Los_Angeles'
  , '1970-01-01 18:00:00 America/Los_Angeles')

Tôi đã tìm thấy điều này bằng cách kiểm tra:

SELECT * FROM pg_timezone_names 
WHERE  utc_offset = '-07:00'
AND    is_dst;

Kiến thức cơ bản về xử lý múi giờ:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sửa bảng TOAST bị hỏng

  2. Postgresql - có cách nào để tắt hiển thị các câu lệnh INSERT khi đọc từ một tệp không?

  3. Tổng hợp các giá trị boolean thành true nếu bất kỳ cột nguồn nào là true

  4. Làm thế nào để thực hiện cập nhật theo tầng?

  5. GeoServer sẽ không ghi vào chế độ xem có thể cập nhật PostgreSQL của tôi