2017-05-25 29 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