PG SQL 10将默认时区设置为UTC
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PG SQL 10将默认时区设置为UTC相关的知识,希望对你有一定的参考价值。
我需要更改数据库配置以使用UTC作为AWS RDS上托管的PostgreSQL10实例的默认值。我希望它在数据库级别永久更改,并且永远不会恢复到任何其他时区,无论如何。
我试过运行它,但它显示0更新的行:
ALTER DATABASE <my-db> SET timezone='UTC';
我已经尝试将自定义参数组附加到RDS中的数据库并修改这样的条目(也在之后重新启动):
无论我做什么,当我运行select * from pg_settings where name = 'TimeZone';
或SHOW timezone
时,它显示'America / Chicago'。
看起来这应该很容易,但事实证明这是一个挑战。
如果您希望以UTC格式存储时间戳并且始终希望数据库也以UTC格式将数据发送到客户端,则应使用数据类型timestamp without time zone
,它不会为您执行任何时区处理。那将是最简单的解决方案。
要转换数据,您可以这样继续:
SET timezone = 'UTC';
ALTER TABLE mytable ALTER timestampcol TYPE timestamp without time zone;
基于这个dba.stackexchange.com问题。显然,PG以UTC时间存储时间戳,但随后将其转换为会话时区。从我收集的内容来看,由于我的时间戳不包含时区信息,我需要告诉PG,存储的时区是UTC,然后将其转换为需要的本地时间,如下所示:
SELECT my_timestamp_in_utc AT TIME ZONE 'UTC' AT TIME ZONE 'America/Denver' as my_local_time
FROM my_table;
这有点冗长,但我现在还会用它。
以上是关于PG SQL 10将默认时区设置为UTC的主要内容,如果未能解决你的问题,请参考以下文章
将 UTC 中的 SQL Server 日期时间转换为特定时区