Don';我不懂PostgreSQL';s时区行为

Don';我不懂PostgreSQL';s时区行为,postgresql,timezone,Postgresql,Timezone,我的本地时区是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。不,它做的是正确的-但是当您为它提供一个没有时区作为左侧的表达式时,您必须理解时区的是什么意思。它基本上

我的本地时区是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。

不,它做的是正确的-但是当您为它提供一个没有时区作为左侧的表达式时,您必须理解时区的
是什么意思。它基本上将其解释为指定时区的时间戳

因此,时区“PRC”中的“2016-09-01 00:00:00”意思是“中国9月1日午夜的那一刻”——即2016-08-31T16:00:00Z

时区“UTC”的“2016-09-01 00:00:00”是指“UTC 9月1日午夜的那一刻”——即2016-09-01T00:00:00Z

所以你要求的是
2016-08-31T16:00:00Z-2016-09-01T00:00:00Z
,实际上是-8小时