postgresql中的时区转换
我有UTC的日期(postgresql中的时区转换,postgresql,Postgresql,我有UTC的日期(带时区的时间戳): 我想将其转换为另一个时区,例如UTC+2。文档中指出,时区的应该为我这样做: 表达 时区的 返回类型 无时区的时间戳 说明 将带有时区的给定时间戳转换为不带时区名称的新时区 看 但当我尝试这样做时,我得到了奇怪的结果: test# select ('2018-05-31T21:00:00+00'::timestamptz) at time zone 'utc+2'; timezone --------------------- 2
带时区的时间戳
):
我想将其转换为另一个时区,例如UTC+2。文档中指出,时区的应该为我这样做:
表达
时区的
返回类型
无时区的时间戳
说明
将带有时区的给定时间戳转换为不带时区名称的新时区
看
但当我尝试这样做时,我得到了奇怪的结果:
test# select ('2018-05-31T21:00:00+00'::timestamptz) at time zone 'utc+2';
timezone
---------------------
2018-05-31 19:00:00
(1 row)
我很确定UTC的21小时等于UTC+2的23小时(毕竟这就是+2
的原因)
我做错了什么?您的问题是POSIX标准规定
另一个需要记住的问题是,在POSIX时区名称中,正偏移量用于格林威治以西的位置。在其他地方,PostgreSQL遵循ISO-8601约定,即正时区偏移位于格林威治以东
test# select ('2018-05-31T21:00:00+00'::timestamptz) at time zone 'utc+2';
timezone
---------------------
2018-05-31 19:00:00
(1 row)