2017-04-06 48 views
0

我需要添加5个小时或从GMT转换为EST。返回目前呈现出了从7P后来昨日...PGSQL - 如何在WHERE子句中为DATE添加5小时?

WHERE 
incident.initial_symptom = 'Chrome Upgrade' AND 
DATE(incident.install_completed) = CURRENT_DATE; 
+1

参见[日期时间函数和操作符列表(https://www.postgresql.org/docs/current /静态/函数的ns-datetime.html)和[AT TIME ZONE运营商](https://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-ZONECONVERT)。 – IMSoP

+1

更好地比较现在()在时区'想要TZ' - 手动调整时区大部分是痛苦的 –

+2

你可以使用'日期(COL)+ INTERVAL'5小时' –

回答

2

,而无需手动添加间隔来获得想要的时区,在时区使用,如:

t=# select now(), now() at time zone 'est'; 
      now    |   timezone 
------------------------------+--------------------------- 
2017-04-07 07:07:39.17234+00 | 2017-04-07 02:07:39.17234 
(1 row) 

根据您的时区,完全一样的语句添加间隔你的约会对象给了不同的结果,例如,在DST转变小时:

t=# set timezone TO 'WET'; 
SET 
t=# select '2017-03-26 00:00:00'::timestamptz + '1 hour'::interval; 
     ?column? 
------------------------ 
2017-03-26 02:00:00+01 
(1 row) 

t=# set timezone TO 'EET'; 
SET 
t=# select '2017-03-26 00:00:00'::timestamptz + '1 hour'::interval; 
     ?column? 
------------------------ 
2017-03-26 01:00:00+02 
(1 row)