选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.0 已于 2015 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本

B.3. 日期/时间配置文件 #

由于时区缩写没有得到良好的标准化,PostgreSQL 提供了一种定制服务器所接受缩写集合的方法。运行时参数 timezone_abbreviations 决定当前使用的缩写集合。任何数据库用户都可以修改此参数,但它的可选值由数据库管理员控制;这些值实际上是安装目录中 .../share/timezonesets/ 下的配置文件名。管理员可以通过在该目录中添加或修改文件,制定本地时区缩写策略。

如果文件名完全由字母组成,那么 timezone_abbreviations 可以被设置为 .../share/timezonesets/ 中找到的任意 文件名。(禁止在 timezone_abbreviations 中使用 非字母字符,不仅可以防止读取目标目录之外的文件,也能防止读取 编辑器备份文件和其他无关文件。)

时区缩写文件可以包含空行,以及以下字符开头的注释:#。非注释行必须采用以下格式之一:

zone_abbreviation offset
zone_abbreviation offset D
zone_abbreviation time_zone_name
@INCLUDE file_name
@OVERRIDE

zone_abbreviation 就是要定义的缩写。 offset 是相对于 UTC 的等效偏移秒数, 正数表示格林尼治以东,负数表示以西。例如,-18000 表示格林尼治 以西五小时,即北美东海岸标准时间。D 表示该 时区名称代表当地夏令时间,而非标准时间。也可以给出 time_zone_name,此时系统会查阅该时区的 定义,并使用该缩写在那个时区中的含义。这种替代方式只推荐用于 含义在历史上发生过变化的缩写,因为查找含义的开销明显高于直接 使用固定的整数值。

@INCLUDE 语法允许包含 .../share/timezonesets/ 目录中的另一个文件。包含可以嵌套,但深度有限。

@OVERRIDE 语法表示文件中后续的条目可以覆盖之前的条目(通常是从被包含文件中取得的条目)。如果没有此指令,同一时区缩写的冲突定义会被视为错误。

在未经修改的安装中,Default 文件包含世界上大多数地区中所有互不冲突的时区缩写。另外还为澳大利亚和印度这两个地区提供了 AustraliaIndia 文件:这些文件会先包含 Default 文件,然后按需添加或修改缩写。

作为参考,标准安装还包含 Africa.txtAmerica.txt 等文件,其中包含 IANA 时区数据库中已知 正在使用的每个时区缩写的信息。可以按需把这些文件中找到的时区 名称定义复制并粘贴到自定义配置文件中。注意,这些文件不能直接 作为 timezone_abbreviations 设置来引用,因为 它们的名称中带有点号。

注意

如果在读取时区缩写集时发生错误,则不会应用新值,而会保留旧集合。如果该错误发生在数据库启动期间,则数据库启动会失败。

小心

配置文件中定义的时区缩写会覆盖 PostgreSQL 内置的非时区含义。例如,Australia 配置文件定义了 SAT(南澳大利亚标准时间)。当该文件处于活动状态时,SAT 将不会被识别为 Saturday 的缩写。

小心

如果你修改了 .../share/timezonesets/ 中的文件,就需要自行做好备份 — 普通的数据库转储不会包含这个目录。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。