postgresql:如何将UTC时间戳转换为悉尼时间

时间:2016-10-11 13:46:08

标签: postgresql timezone timestamp utc

我有一个PostgreSQL数据库,其中包含许多表,可以在悉尼/澳大利亚当地时间存储时间戳。另外,我有一个表以UTC格式存储时间戳。这不能改变。

我的问题是 - 为了在悉尼/澳大利亚当地时间获取UTC时间戳,我需要使用哪些SQL操作?

我意识到悉尼有夏令时,而且我不确定如何编写我的SQL以便转换始终是正确的 - 无论时间戳是在夏令时拍摄还是不

请告知。

谢谢, 阿米特

1 个答案:

答案 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