在正确的时区从postgres中检索UTC时间戳

时间:2015-11-04 22:20:21

标签: postgresql time

我在postgres数据库中存储带时区的时间戳。服务器时区是UTC。所有timestamptz都存储为UTC日期时间。

现在,我想要检索这些时间戳,但是针对特定时区(例如美国/太平洋地区)。由于夏令时,正确的时区有时是PDT,有时是PST。所以我不能只运行像select t at time zone 'pdt'这样的查询,因为pst日期会出错。

有没有办法在正确的时区从数据库中提取日期?

1 个答案:

答案 0 :(得分:2)

根据documentationTIME 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)