PostgreSQL 数据库的时区设置对于确保时间相关数据的正确存储、处理和显示至关重要。默认情况下,PostgreSQL 可能使用 UTC 或其他时区,这会导致日志时间戳、时间函数返回值与本地时间不一致,给开发和运维带来困扰。

本文将详细介绍如何将 PostgreSQL 的时区修改为中国时区(Asia/Shanghai),涵盖临时修改和永久修改两种方法,帮助您根据实际需求选择合适的配置方案。
您可以在 psql 命令行中执行以下命令,立即生效,但仅限当前会话或直到数据库重启。
SET log_timezone TO 'Asia/Shanghai';
这是最根本的解决方法,即使重启数据库也会保持中国时区设置。
首先,登录到数据库,查看当前的时区设置:
SHOW log_timezone;SHOW timezone;
找到 PostgreSQL 的配置文件 postgresql.conf,修改以下两个参数:
# 使用 vi 或其他编辑器编辑配置文件vi /var/lib/pgsql/15/data/postgresql.conf
找到文件中的这两个参数,修改为:
# 日志记录的时区,修改为中国时区log_timezone = 'Asia/Shanghai'# 数据库内部存储和计算的时区,也建议修改为中国时区timezone = 'Asia/Shanghai'
如果行首有 # 号,请务必去掉,否则该行不会生效。
要使配置文件中的修改生效,需要重启 PostgreSQL 服务。
systemctl restart postgresql-15
重启后,再次登录数据库,运行 SHOW log_timezone; 和 SHOW timezone; 确认值已变为 Asia/Shanghai。