131*_*131 5 postgresql timezone
有人能解释我这种反转,我迷失在这里......
SELECT EXTRACT(EPOCH FROM '01-01-1970 00:00:00 UTC+01'::timestamp with time zone)
=> 3600
SELECT EXTRACT(EPOCH FROM '1970-01-01 00:00:00+01'::timestamp with time zone)
=> -3600
Postgres 8.3.14
这个
1970-01-01 00:00:00+01
是ISO 8601时间戳,+1小时偏移,+1表示格林威治以东.这些中的抵消
01-01-1970 00:00:00 UTC+01
1970-01-01 00:00:00 UTC+01
1970-01-01 00:00:00 XXX+01
1970-01-01 00:00:00 HAHA+01
1970-01-01 00:00:00 Pancakes+01
将被解释为POSIX风格的时区,其中+1表示格林威治以西:
PostgreSQL将接受STDoffset或STDoffsetDST形式的POSIX风格时区规范,其中STD是区域缩写,offset是以UTC为单位的数字偏移量,以UTC为单位
那些甚至带来警告:
应该警惕POSIX风格的时区功能可以导致静默接受虚假输入,因为没有检查区域缩写的合理性.例如,
SET TIMEZONE TO FOOBAR0将使用UTC的相当特殊的缩写有效地离开系统.另外要记住的一个问题是,在POSIX时区名称中,正偏移用于格林威治以西的位置.在其他地方,PostgreSQL遵循ISO-8601惯例,正面时区偏移位于格林威治以东.
注意西与东的差异.