Postgresql 夏季和冬季postgres时区/时间戳
我在postgres中将csv数据上传到表中。其中一列是带有历元填充的字符变化列。输入的数据如下所示: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 结果看起来不错,我继续做下去。我住在荷兰,这里每年有两次冬夏交
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