我有一个PostgreSQL数据库,其中包含许多表,可以在悉尼/澳大利亚当地时间存储时间戳。另外,我有一个表以UTC格式存储时间戳。这不能改变。
我的问题是 - 为了在悉尼/澳大利亚当地时间获取UTC时间戳,我需要使用哪些SQL操作?
我意识到悉尼有夏令时,而且我不确定如何编写我的SQL以便转换始终是正确的 - 无论时间戳是在夏令时拍摄还是不
请告知。
谢谢, 阿米特
答案 0 :(得分:4)
使用at time zone
之类的:
t=# select now() at time zone 'AEDT';
-[ RECORD 1 ]------------------------
timezone | 2016-10-11 08:20:39.067256
Time: 2.439 ms
例如有一个outdated list of timezones
或者只使用pg_timezone_names
:
t=# select * from pg_timezone_names() where name ilike '%sydney%';
-[ RECORD 1 ]----------------------
name | posix/Australia/Sydney
abbrev | AEDT
utc_offset | 11:00:00
is_dst | t
-[ RECORD 2 ]----------------------
name | Australia/Sydney
abbrev | AEDT
utc_offset | 11:00:00
is_dst | t
Time: 171.649 ms