Postgres UTC 日期格式和纪元转换,符号反转



谁能给我解释一下这个符号反转,我在这里迷路了…

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

This

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

和那些甚至带有警告:

应该警惕posix风格的时区特性可能导致无声地接受虚假输入,因为没有对区域缩写的合理性进行检查。例如,SET TIMEZONE TO FOOBAR0可以工作,使系统有效地使用一个相当特殊的UTC缩写。另一个要记住的问题是,在POSIX时区名称中,正偏移量用于格林威治以西的位置。在其他地方,PostgreSQL遵循ISO-8601约定,正时区偏移量位于格林威治以东。

注意东西方的差异

相关内容

  • 没有找到相关文章

最新更新