如何确保我在Postgresql周围的整个开发环境不会搞乱本地时区.为简单起见,我需要100%确保每个时间(标记)值都是UTC.当我使用CURRENT_TIMESTAMP函数插入带时间戳而没有时区(!)的行时,我必须意识到情况并非如此,即使我从未指定任何时区信息.
是否有任何逐步手册可以帮助我摆脱时区?
解决方法
这需要先了解.我写了一篇关于Postgresql如何处理时间戳和时区的综合答案:
Ignoring timezones altogether in Rails and PostgreSQL
Ignoring timezones altogether in Rails and PostgreSQL
你不能“不”拥有时区.您可以使用timestamp [without time zone]
类型进行操作,但您的客户端仍有时区.
你的陈述:
When I inserted a row with
timestamp without time zone
(!) using theCURRENT_TIMESTAMP
function …
是一个contradictio in adjecto. CURRENT_TIMESTAMP返回带时区(!)的时间戳.如果您只是将其强制转换(或自动强制转换)到时间戳[没有时区],则时区偏移将被截断而不是应用.您获得本地时间(无论会话的当前时区设置是什么)而不是UTC.考虑:
@H_502_34@SELECT CURRENT_TIMESTAMP AT TIME ZONE 'UTC',CURRENT_TIMESTAMP::timestamp除非您的本地时区设置为“UTC”或类似“伦敦”,否则这两个表达式将返回不同的值.
@H_502_34@SELECT CURRENT_TIMESTAMP::timestamp,Now()::timestamp,LOCALTIMESTAMP;如果要保存以UTC表示的时间点,请使用以下方法之一:
@H_502_34@SELECT CURRENT_TIMESTAMP AT TIME ZONE 'UTC',Now() AT TIME ZONE 'UTC;版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。