PostgreSQL now()函数返回错误时区偏移问题求助
解决PostgreSQL now()返回错误Africa/Cairo时区偏移的问题
针对埃及夏令时调整后PostgreSQL now()返回错误时区偏移的问题,可按以下步骤排查修复:
检查容器内tzdata版本
PostgreSQL依赖系统的tzdata包获取时区规则,即使宿主tzdata已更新,容器内可能仍使用旧版本。在容器内执行:apt show tzdata确认tzdata版本是否包含埃及最新的夏令时调整规则(埃及2023年的DST调整需tzdata 2023a及以上版本)。
更新容器内的tzdata
如果tzdata版本过旧,执行以下命令更新:apt update && apt install --only-upgrade tzdata更新过程中选择时区为
Africa/Cairo。重启PostgreSQL服务
时区数据更新后,PostgreSQL需要重启才能加载新规则:pg_ctl restart -D /var/lib/postgresql/data或直接重启容器:
docker restart <你的PostgreSQL容器名>验证时区规则生效
重启后执行以下查询验证结果:select now(); select '2023-05-05 23:00:00'::timestamp with time zone; select * from pg_timezone_names where name = 'Africa/Cairo';确认返回的时区偏移为
+0300。检查容器时区挂载配置
若容器挂载了宿主的/etc/localtime或/usr/share/zoneinfo,确保挂载文件包含最新时区规则。若挂载文件过时,需更新宿主tzdata后重新挂载或重启容器。
内容的提问来源于stack exchange,提问作者Moutaz Salem
相关产品推荐
相关产品推荐

