我在postgres数据库中存储带时区的时间戳。服务器时区是UTC。所有timestamptz都存储为UTC日期时间。
现在,我想要检索这些时间戳,但是针对特定时区(例如美国/太平洋地区)。由于夏令时,正确的时区有时是PDT,有时是PST。所以我不能只运行像select t at time zone 'pdt'
这样的查询,因为pst
日期会出错。
有没有办法在正确的时区从数据库中提取日期?
答案 0 :(得分:2)
根据documentation和TIME ZONE
代码,您还可以指定区域设置。对于您的情况,您可以使用类似的东西:
ds=# SELECT current_setting('TIMEZONE');
current_setting
-----------------
UTC
(1 row)
ds=# SELECT now();
now
-------------------------------
2015-11-05 00:35:03.126317+00
(1 row)
pm7=# SELECT now() AT TIME ZONE 'America/Los_Angeles';
timezone
----------------------------
2015-11-04 16:35:06.344367
(1 row)