我正在尝试使用PostgreSQL TIME
数据类型,并且发现了奇怪的行为。
test=# SELECT CURRENT_TIME;
current_time
--------------------
08:43:35.446737+00
(1 row)
test=# SELECT CURRENT_TIME AT TIME ZONE '+04';
timezone
--------------------
04:43:50.475164-04
(1 row)
test=# SELECT CURRENT_TIME AT TIME ZONE '-04';
timezone
--------------------
12:43:54.810124+04
(1 row)
您会注意到,默认时区为 00 ,因此,当我将其转换为 +04 时,我希望得到的结果与< strong> -04
是否有人知道这种行为背后的原因,或者这是一个错误
答案 0 :(得分:1)
您正在使用POSIX样式的时区名称,这有点奇怪。来自the docs:
要记住的另一个问题是,在POSIX时区名称中,格林威治以西的位置使用正偏移量。 PostgreSQL在其他任何地方都遵循ISO-8601约定,正时区偏移量位于格林威治以东。
此外,来自同一文档:
我们不建议使用带时区的时间类型(尽管PostgreSQL支持遗留应用程序并符合SQL标准)。