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

Tôi có nên lưu trữ múi giờ riêng biệt với dấu thời gian cho Postgres và JDBC không?

Khi bạn lưu trữ timestamp with time zone (timestamptz ) nó được chuyển đổi thành UTC để lưu trữ trong DB. Khi được truy xuất, nó được chuyển đổi thành múi giờ hiện tại của khách hàng, không phải múi giờ ban đầu. Về cơ bản, đó là một thời điểm.

Ngoài ra còn có timestamp without time zone (timestamp ). Điều này không phụ thuộc vào chuyển đổi, nhưng không không mang theo một dấu thời gian với nó. Nếu bạn lưu trữ timestamp với múi giờ khách hàng của bạn được đặt thành UTC, sau đó truy xuất nó khi múi giờ khách hàng là '+08:00', bạn sẽ nhận được cùng một giá trị. Đó là một nửa những gì bạn muốn, trong đó nó bảo toàn giá trị thời gian thô.

Các tên và hành vi rất khủng khiếp và khó hiểu, nhưng được đặt theo tiêu chuẩn SQL.

Bạn phải lưu trữ múi giờ riêng biệt nếu bạn muốn ghi lại một điểm trong thời gian tại một múi giờ cụ thể. Tôi khuyên bạn nên lưu trữ nó dưới dạng INTERVAL với CHECK ràng buộc giới hạn nó là colname BETWEEN INTERVAL '-12' HOUR + INTERVAL '1' SECOND AND INTERVAL '12' HOUR . Định nghĩa đó bác bỏ -12:00 và chấp nhận +12:00; Tôi không hoàn toàn chắc chắn điều đó là đúng, vì vậy hãy kiểm tra.

Bạn có thể lưu trữ timestamp của giờ địa phương tại múi giờ đó (điều tôi có thể làm) hoặc lưu trữ timestamptz của giờ UTC khi sự kiện xảy ra cộng với khoảng thời gian bù cho phép bạn chuyển đổi nó thành giờ địa phương.

Một trong hai sẽ hoạt động tốt cho JDBC. Đối với JPA, nó sẽ phụ thuộc vào mức độ hiểu của nhà cung cấp của bạn và ánh xạ các loại khoảng thời gian. Lý tưởng nhất là bạn muốn một trường được tạo tạm thời trong thực thể của mình để cấu trúc lại phiên bản Lịch mà bạn muốn bằng cách sử dụng timestampinterval được lưu trữ trong cơ sở dữ liệu.



  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 tùy chọn có sẵn để xác định và loại bỏ các đối tượng không hợp lệ trong Postgres là gì (ví dụ:chỉ mục bị hỏng)

  2. Viết truy vấn cho nhiều bảng trong php

  3. chức năng tổng hợp nhóm theo ngày trong postgresql

  4. Trên Chèn:điểm tham chiếu cột không rõ ràng

  5. Làm thế nào để viết một ràng buộc liên quan đến số lượng hàng tối đa trong postgresql?