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

Postgres ngăn dấu thời gian với chuyển đổi múi giờ

Giải pháp đề xuất của bạn là đúng. Hay chính xác hơn, nó là một trong một số cách triển khai đúng. Bất kỳ cách nào sau đây sẽ hoạt động:

  • Lưu trữ dấu thời gian UTC trong một trường, lưu trữ giá trị chênh lệch trong trường khác.
  • Lưu trữ dấu thời gian địa phương trong một trường, lưu trữ phần bù vào trường khác.
  • Lưu trữ date cục bộ trong một trường và lưu trữ time with time zone trong cái khác. (mặc dù time with time zone nói chung là không khuyến khích ...)
  • Lưu trữ dấu thời gian UTC trong một trường và dấu thời gian cục bộ trong một trường khác.

Cách dễ nhất cho đến nay là cái đầu tiên mà bạn đã đề xuất.

Tôi không muốn lưu trữ dấu thời gian trong text vì chúng có xu hướng không được tìm kiếm hiệu quả.

Cũng lưu ý - nếu bạn đến từ nền SQL Server, bạn có thể nhớ lại datetimeoffset của nó nhập, lưu trữ ngày giờ cục bộ và độ lệch trong trường và sử dụng UTC tương đương trong quá trình lập chỉ mục. Người ta thường nghĩ rằng dấu thời gian timestamp with time zone sẽ có hành vi tương tự, nhưng họ không. Họ chỉ sử dụng phiên múi giờ để chuyển đổi sang / từ UTC. SQL Server không có khái niệm về múi giờ phiên và do đó có sự khác biệt.

Hãy nhớ đọc phần này của tài liệu Postgres .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để xóa nhận xét khỏi tệp sql thô

  2. Hành vi KHÔNG THÍCH với giá trị NULL

  3. Cách tìm kiếm bằng cách sử dụng giá trị của một biến Refcursor

  4. Làm cách nào để tạo một hàm băm của tập kết quả trong Hậu kỳ?

  5. SQL Đếm ngày cho đến đầu tháng