我有一个带有TIMESTAMP WITH TIME ZONE
值的postgres数据库。值可以具有任意时区。我现在想要在特定时区使用date_trunc
函数。我虽然可以使用AT TIME ZONE
函数将所有时间戳标准化为一个时区,但结果我得到一个没有时区信息的TIMESTAMP
。
e.g:
select now(), now() AT TIME ZONE 'Europe/London';
now | timezone
-------------------------------+----------------------------
2015-08-12 12:21:55.337973+02 | 2015-08-12 11:21:55.337973
我想要的是获得附加时区信息的结果,例如2015-08-12 11:21:55.337973+01
,但我似乎无法为此找到命令。
我目前的解决方案是再次使用AT TIME ZONE``, then using date_trunc on the
TIMESTAMP without timezone and
AT TIME ZONE```来重新附加时区信息。但是,以这种方式使用它似乎很难看:
SELECT
date_trunc('day', '2015-08-01 00:00:00+02'::timestamptz),
date_trunc('day', '2015-08-01 00:00:00+02'::timestamptz AT TIME ZONE 'Europe/London')
AT TIME ZONE 'Europe/London';
date_trunc | timezone
------------------------+------------------------
2015-08-01 00:00:00+02 | 2015-07-31 01:00:00+02
我的问题是:
感谢您的帮助。