我当地的时区是PRC(中国),UTC + 8,但
select (timestamp '2016-09-01 00:00:00' at time zone 'PRC')
- (timestamp '2016-09-01 00:00:00' at time zone 'UTC');
返回-08:00:00
。不应该是+08:00:00
吗?
我的PostgreSQL版本是9.5。
答案 0 :(得分:6)
不,它正在做正确的事情 - 但是当你向它提供表达式而没有时区作为左侧时,你必须理解at time zone
的意思。它基本上将其解释为指定时区的时间戳 。
所以'2016-09-01 00:00:00' at time zone 'PRC'
表示“9月1日午夜在中国的时间” - 即2016-08-31T16:00:00Z。
并且'2016-09-01 00:00:00' at time zone 'UTC'
表示“9月1日午夜时间的UTC时刻” - 即2016-09-01T00:00:00Z。
所以你要2016-08-31T16:00:00Z - 2016-09-01T00:00:00Z
,这确实是-8小时。