2011-06-27 56 views
8

Cách nhanh chóng và dễ dàng để sửa các múi giờ TIMESTAMP WITH TIME ZONE trường nào đã vô tình được nhập sai múi giờ?Cập nhật múi giờ cập nhật PostgreSQL

Trong trường hợp của tôi, các hồ sơ sau khi đã nhập nhầm lẫn trong UTC chứ không phải ở Mỹ/Thái Bình Dương:

  t0   |   t1   |  what 
------------------------+------------------------+--------------- 
2011-06-01 13:00:00+00 | 2011-06-01 13:10:00+00 | recalibrating 
2011-06-01 13:10:00+00 | 2011-06-01 13:45:00+00 | verifying 
2011-06-01 13:45:00+00 | 2011-06-01 13:55:00+00 | FAULT 

May mắn thay, không ai trong số các hồ sơ nhầm vượt qua ranh giới tiết kiệm ánh sáng ban ngày, vì vậy 02:00 UTC thể đơn giản được sửa chữa là 2 giờ Thái Bình Dương.

Trả lời

9
UPDATE <table> SET <timestamptz_field> = (<timestamptz_field> AT TIME ZONE 'UTC') AT TIME ZONE '<correct_time_zone>'; 
5

Có phôi và, quan trọng hơn, at time zone điều hành, đó là hữu ích cho loại điều, ví dụ .:

test=# select now(), 
       now()::timestamp; 

       now    |   now    
-------------------------------+---------------------------- 
2011-06-27 14:32:04.169292+02 | 2011-06-27 14:32:04.169292 
(1 row) 

test=# select now() at time zone 'utc', 
      (now() at time zone 'utc')::timestamp with time zone; 

      timezone   |   timezone    
----------------------------+------------------------------- 
2011-06-27 12:32:28.430479 | 2011-06-27 12:32:28.430479+02 
(1 row) 
Các vấn đề liên quan