我有一个严重依赖时区的应用程序,我正在使用 PostgreSQL 来存储和查询我的数据。我让用户选择他们自己的时区,通过以扩展形式(即欧洲/罗马)显示 postgresql 支持的时区列表。所有关于时间/日期的信息都由 PostgreSQL 本身处理,而我的脚本语言 (PHP) 只是简单地获取数据并提供它,而不改变基于时间的数据。
当用户想要修改她/他自己的时区时,我使用如下查询返回时区列表:
SELECT tz.name AS measure, tz.utc_offset AS utc_offset, tz.is_dst AS is_dst FROM pg_timezone_names() tz;
用户将能够通过指定扩展时区名称来选择他们的时区tz.name
。我不会以任何方式使用或允许任何时区缩写。
根据官方文档,我可以更改时区缩写,但我没有找到有关 Postgres 使用的 Olson DB 版本的任何信息。我真的很想控制 Olson DB,所以:
- 我在哪里可以找到有关所用时区数据库版本的任何信息?
- 是否可以通过替换最新的官方IANA版本来更新时区的数据库?考虑一个带有 Postgres 8.4 的遗留系统,没有机会更新它。
非常感谢你们
目前(2017 年 1 月 23 日)
2016j
2016j
是最新版本。您可以在此处查看上游 tz 数据库的更改 long
查看src/timezone/README 中的 README,其中显示“此目录中的代码当前与 tzcode 版本 2016j 同步。”
它已经是最新版本了,但我想如果它落后了,补丁会被接受。您可以在上面的自述文件中找到创建补丁的说明。