You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 9.5时区数据库单独更新方法咨询

可以单独更新PostgreSQL的时区数据库,无需重装整个数据库

当然可以!PostgreSQL的时区数据依赖于IANA的tz数据库,你完全可以单独更新这部分数据,不用动整个数据库安装。下面分两种常见情况说明具体操作:

情况1:你的PostgreSQL使用系统的时区数据(绝大多数Linux发行版默认如此)

大多数Linux系统里,PostgreSQL会直接调用系统的tzdata包。这种情况下,更新系统的时区包就可以了:

  • Debian/Ubuntu系列:
    sudo apt-get update && sudo apt-get install --only-upgrade tzdata
    
  • RHEL/CentOS系列:
    # CentOS 7及以下
    sudo yum update tzdata
    # CentOS 8+ / RHEL 8+
    sudo dnf update tzdata
    

更新完成后,重启PostgreSQL服务让新时区数据生效:

sudo systemctl restart postgresql

情况2:你的PostgreSQL自带独立的时区数据(比如官方二进制包、源码编译时未指定使用系统tzdata)

如果PostgreSQL是用官方二进制包安装,或者编译时加了--without-system-tzdata参数,它会自带一套独立的时区文件。这种情况下需要手动替换PostgreSQL的时区文件:

  1. 找到PostgreSQL的时区文件目录:
    运行以下命令获取共享目录路径:

    pg_config --sharedir
    

    时区文件通常在这个路径下的timezone子目录里,比如/usr/local/pgsql/share/timezone。

  2. 备份原有时区文件:

    cp -r /usr/local/pgsql/share/timezone /usr/local/pgsql/share/timezone.bak
    
  3. 获取并替换更新后的时区文件:
    你可以从PostgreSQL官方提供的同版本(9.5)最新补丁包中提取share/timezone目录下的所有文件,直接覆盖原有目录即可;也可以下载IANA最新的tzdata包,用PostgreSQL兼容的zic工具编译后替换(前者操作更简单)。

  4. 重启PostgreSQL服务:

    sudo systemctl restart postgresql
    

验证更新是否成功

建议用时区变更后的时间点测试(伏尔加格勒的时区变更发生在2014年),运行以下查询:

SELECT TIMESTAMP '2024-01-01 12:00:00' AT TIME ZONE 'Europe/Volgograd';

如果返回结果是2024-01-01 12:00:00+04,就说明时区数据已经更新成功了。

额外提醒:PostgreSQL 9.5已经在2021年结束了官方维护,虽然单独更新时区数据可行,但长期来看,升级到受支持的PostgreSQL版本(比如12+)会更安全,也能获得更多功能和更新支持。

内容的提问来源于stack exchange,提问作者Den Kasyanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:44:22