postgresql - 在 postgresql 中的时区之间转换
问题描述
我有一个 UTC ( timestamp with time zone
) 日期:
test=# select ('2018-05-31T21:00:00+00'::timestamptz);
timestamptz
------------------------
2018-05-31 21:00:00+00
(1 row)
我想将其转换为另一个时区,例如 UTC+2。文档说明at time zone
应该为我做这件事:
Experession返回类型描述 将给定的带有时区的时间戳转换为新的时区,不指定时区
<timestamp with time zone> AT TIME ZONE <zone>
timestamp without time zone
见这里。
但是当我尝试这样做时,我得到了奇怪的结果:
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 约定,即正时区偏移量位于格林威治以东。
推荐阅读
- regex - 如何使用正则表达式查看复杂模式?
- react-native - 如何使用 expo(文件系统)将视频转换为 base64
- java - 编译 MCP 9.10 时出现 Eclipse JVM 错误
- python - 如何根据条件分配特定值?
- python - 如果没有消息到达,Telethon 会做一些事情
- jquery - TypeError: a is not a function in AngularJS on Modal Pop-up Issue
- python - 如何将互联网中的客户端连接到服务器
- java - 对可选整数列表求和
- javascript - Javascript Objects - 检查并遍历对象中的数组
- zend-framework - 使用 wamp 服务器使用 zend 框架创建项目时出现问题