Postgresql
批量更新時間戳記錄以正確的時區
我正在尋找批量更新 postgresql 中的一些時間戳記錄。
我的應用程序在錯誤的時區 (BST) 中將時間戳儲存到時間戳列(沒有時區)。我只是在 DST 開始後(3 月 25 日)才注意到,所以並不是所有的記錄都是“錯誤的”。
timestamp ------------------- 2018-04-13 00:02:01 2018-04-11 20:22:32 2018-04-10 12:00:56 2018-04-10 11:25:56 2018-04-10 01:57:05 2018-04-07 03:38:32 2018-04-05 12:25:10 2018-04-05 09:09:49
我想將 BST 中的記錄範圍轉換為 UTC。這樣做的最佳方法是什麼?
要調整
timestamp
任何兩個給定時區之間的差異值,請AT TIME ZONE
連續使用該構造兩次。看:假設您要在“2018-03-25 01:00”英國夏令時 (BST) 開始後調整所有時間戳:
UPDATE tbl SET ts = ts AT TIME ZONE 'BST' AT TIME ZONE 'UTC' WHERE ts >= '2018-03-25 01:00';
當然,在您的特定範例中,您可能只需減去一個小時:
... SET ts = ts - interval '1 hour' ...