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

Thay đổi giá trị múi giờ của dữ liệu

Đó là rất nhiều hiệu quả hơn để đặt múi giờ cho phiên nhập của bạn hơn là cập nhật các giá trị sau đó.

Tôi có ấn tượng rằng bạn nghĩ về múi giờ giống như một cài đặt áp dụng cho các giá trị không thay đổi trong bảng. Nhưng hoàn toàn không phải như vậy. Hãy coi nó như một công cụ sửa đổi đầu vào / đầu ra. timestamp thực tế giá trị (có hoặc không có múi giờ) là luôn luôn được lưu trữ dưới dạng dấu thời gian UTC trong nội bộ (số giây kể từ '2000-01-01 00:00' ). Nhiều chi tiết hơn:

UPDATE trong ví dụ thứ hai của bạn tăng gấp đôi kích thước của bảng, vì mọi hàng đơn lẻ đều không hợp lệ và một phiên bản mới được thêm vào (đó là cách UPDATE hoạt động với MVCC trong Postgres). Ngoài hoạt động tốn kém, VACUUM sẽ phải làm thêm công việc sau đó để dọn dẹp bàn ăn. Rất kém hiệu quả.

hoàn toàn an toàn thành SET múi giờ địa phương cho phiên. Điều này không ảnh hưởng đến các hoạt động đồng thời theo bất kỳ cách nào. BTW, SET SESSION giống với SET đơn giản bởi vì SESSION vẫn là mặc định.

Nếu bạn muốn trở thành hoàn toàn chắc chắn, bạn có thể giới hạn cài đặt cho giao dịch hiện tại với SET LOCAL . Tôi trích dẫn hướng dẫn sử dụng tại đây

Kết hợp với nhau:

BEGIN;
SET LOCAL timezone = 'UTC';
COPY tabledata FROM 'c:\Users\Public\Downloads\test.csv' DELIMITERS ',' CSV;
COMMIT;

Kiểm tra:

SHOW timezone;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql varchar có tính bằng độ dài ký tự unicode hoặc độ dài ký tự ASCII không?

  2. Truy vấn postgresql cho các đối tượng trong trường JSONB lồng nhau

  3. Trình điều khiển PostgreSQL 9.2 JDBC sử dụng múi giờ máy khách?

  4. Lỗi biểu mẫu / cơ sở dữ liệu Django:giá trị quá dài đối với ký tự loại thay đổi (4)

  5. Tạo hoặc thay thế các postgres kích hoạt