根据Postgres文档at time zone
可以采用ISO-8601样式时间偏移或标准时区缩写。
http://www.postgresql.org/docs/9.1/static/datatype-datetime.html#DATATYPE-TIMEZONE-TABLE
IST代表Postgres的ISRAEL STANDARD TIME,偏移量为+02:00。 示例当格林威治(格林威治标准时间)周三中午12:00时,以色列(IST)周三凌晨02:00
所以下面的两个陈述应该是等价的:
select cast('2012-07-02 00:00:00' as timestamp without time zone) at time zone 'IST';
select cast('2012-07-02 00:00:00' as timestamp without time zone) at time zone '+02:00';
但他们不是。这两个陈述都给出了不同的结果。
将+02:00
更改为-02:00
可解决问题。此行为与文档不一致。我错过了什么吗?我从文件(以及一般惯例)中理解的是,格林威治标准时间以东的时区有正偏移,而右边的时区有负偏移。那么这里发生了什么?