在Postgresql中,时区偏移量是错误的符号



我正在尝试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

是否熟悉这种行为背后的原因,或者这是一个错误

您正在使用posix样式的时区名称,它们的工作方式有些奇怪。从文档中:

要记住的另一个问题是,在Posix时区名称中,正面偏移用于格林威治以西的位置。在其他任何地方,PostgreSQL都遵循ISO-8601惯例,即积极的时区偏移在格林威治以东。

另外,来自同一文档:

我们不建议使用时区使用类型时间(尽管PostgreSQL支持旧应用程序并符合SQL标准(。

相关内容

  • 没有找到相关文章

最新更新