Postgresql 夏季和冬季postgres时区/时间戳

Postgresql 夏季和冬季postgres时区/时间戳,postgresql,timestamp,Postgresql,Timestamp,我在postgres中将csv数据上传到表中。其中一列是带有历元填充的字符变化列。输入的数据如下所示: Example record: 1507656308. 历元字符变化列转换为时间戳列,如下所示: select TIMESTAMP WITH TIME ZONE 'epoch' + timestamp::integer * INTERVAL '1 second' as timestamp from table 结果看起来不错,我继续做下去。我住在荷兰,这里每年有两次冬夏交

我在postgres中将csv数据上传到表中。其中一列是带有历元填充的字符变化列。输入的数据如下所示:

Example record: 1507656308.
历元字符变化列转换为时间戳列,如下所示:

select 
    TIMESTAMP WITH TIME ZONE 'epoch' + timestamp::integer * INTERVAL '1 second' as timestamp
from
    table
结果看起来不错,我继续做下去。我住在荷兰,这里每年有两次冬夏交替。显然,我的数据没有区别

我试着找出我现在的时区。我喜欢这样:

SELECT EXTRACT(TIMEZONE FROM timestamp) FROM table;
导致:

3,600.0000
当我试图计算出我的一般时区时,我得到了以下结论:

show timezone
= Europe/Berlin

如何获得时间戳来识别夏季与冬季?或者我做错了什么?

在所有将历元值(为什么存储为字符串?)转换为带时区的时间戳的创造性方法中,这是一种更有趣的方法

简单而乏味的方式是

SET timezone = 'Europe/Berlin';

SELECT to_timestamp(1507656308);

      to_timestamp      
------------------------
 2017-10-10 19:25:08+02
(1 row)
时区偏移为两小时,因为在10月10日,夏令时生效(中欧夏季时间)

事实上:

SELECT extract(timezone FROM to_timestamp(1507656308));

 date_part 
-----------
      7200
(1 row)

所以一切都按预期进行,对吗?

要支持时区/DST,您应该使用TIMESTAMTZ数据类型insetad