我正在尝试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 转换时得到的结果strong>转换>
是否熟悉这种行为背后的原因,或者这是一个错误
您正在使用posix样式的时区名称,它们的工作方式有些奇怪。从文档中:
要记住的另一个问题是,在Posix时区名称中,正面偏移用于格林威治以西的位置。在其他任何地方,PostgreSQL都遵循ISO-8601惯例,即积极的时区偏移在格林威治以东。
另外,来自同一文档:
我们不建议使用时区使用类型时间(尽管PostgreSQL支持旧应用程序并符合SQL标准(。