↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2
历史版本。 PostgreSQL 9.0 已结束支持。 2015-10-08. 请参阅 当前版本手册.

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 文件包含世界上大多数地区中所有互不冲突的时区缩写。另外还为澳大利亚和印度这两个地区提供了 Australia 和 India 文件:这些文件会先包含 Default 文件,然后按需添加或修改缩写。

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

注意

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

小心

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

小心

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

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.