2015-11-04 154 views
1

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

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

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

回答

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) 
+0

啊哈。我没有意识到我可以使用'America/Los_Angeles'!我会测试一下。谢谢。 –