2016-10-11 120 views
2

我有一个PostgreSQL数据库,其中包含许多可在悉尼/澳大利亚当地时间存储时间戳的表格。另外,我有一张存储UTC时间戳的表格。这不能改变。postgresql:如何将UTC时间戳转换为悉尼时间

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

我意识到悉尼有夏令时期的事实,而且我不知道如何编写我的SQL,以便转换始终正确 - 无论夏时制是否采用时间戳。

请指教。

感谢, 阿米特

回答

4

使用at time zone像:

pond93=# 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

pond93=# 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 
+0

因此,假设我有2个以下记录: – Aamit

+0

如果您有pre 9.0版本(其中包含'pg_timezone_names'),则使用Web链接以上 –

相关问题