2017-05-25 58 views
0

我使用ODBC導出函數將Access表中的數據導入到postgres表中。 Postgres正在創建新的時間戳作爲時間戳,並且似乎強制我的日期(UTC開始)到UTC,從而將所有事情都轉移了大約4個小時。 示例==此記錄以2017/05/20 00:00:00進行,並被翻譯爲: 2017-05-19 20:00:00在postgres中導入的時區偏移

+0

如果它把它們與時區,那麼將使用數據庫服務器所在位置的時區,所以如果您的日期,實際上是UTC,而不是你的Postgres實例的時區,那麼你就需要修改該當你輸入數據。或者,您可以簡單地將postgres表的數據類型更改爲不帶時區的數據類型,並始終使用該數據的UTC。 – ManoDestra

回答

0

帶時區的postgres時間戳確實會強制要存儲的日期以UTC表示。所以如果你有時間用UTC時間 - 你很好。您觀察到的4小時轉換不存儲在數據庫中 - 這是由於您的客戶端時區。 Postgres根據您的區域顯示(存儲在utc中)時間。 EG:

t=# select '2017/05/20 00:00:00'::timestamptz at time zone 'utc'; 
     timezone 
--------------------- 
2017-05-19 20:00:00 
(1 row) 

Time: 0.368 ms 
t=# set timezone TO 'utc'; 
SET 
Time: 9.633 ms 
t=# select '2017/05/20 00:00:00'::timestamptz at time zone 'utc'; 
     timezone 
--------------------- 
2017-05-20 00:00:00 
(1 row) 

Time: 0.353 ms