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

由于时区缩写没有很好的标准化,PostgreSQL提供了一种定制服务器接受的缩写集的方法。这个时区_缩写运行时参数确定激活的缩写集。虽然此参数可以由任何数据库用户更改,但它的可能值由数据库管理员控制——它们实际上是存储在数据库中的配置文件的名称.../共享/时区集/安装目录的。通过添加或更改该目录中的文件,管理员可以为时区缩写设置本地策略。

时区缩写可以设置为在中找到的任何文件名.../共享/时区集/,如果文件名完全按字母顺序排列。(禁止使用非字母字符)时区缩写防止读取目标目录之外的文件,以及读取编辑器备份文件和其他无关文件。)

时区缩写文件可以包含以开头的空行和注释#。非注释行必须具有以下格式之一:

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

A.*zone_缩写只是缩写的定义。一抵消*是一个整数,以秒为单位表示与UTC的等效偏移量,从格林威治向东为正,从西为负。例如,-18000将是格林威治以西五小时,或北美东海岸标准时间。D指示区域名称表示本地夏令时,而不是标准时间。

或者,一个*时区名称*可以给定,引用IANA时区数据库中定义的区域名称。参考区域的定义,查看缩写是否在该区域使用,如果是,则使用适当的含义——即,在确定其值的时间戳时当前正在使用的含义,或在该时间戳之前立即使用的含义(如果当时不是最新的),或仅在该时间之后使用的最古老含义。这种行为对于处理历史上意义各异的缩略语至关重要。它还可以根据没有出现缩写的区域名称来定义缩写;那么使用缩写就相当于写出区域名称。

# 提示

使用简单整数*抵消*在定义与UTC的偏移量从未改变的缩写词时,首选此选项,因为处理此类缩写词比处理那些需要咨询时区定义的缩写词要便宜得多。

这个@包括语法允许将另一个文件包含在.../共享/时区集/目录包含可以嵌套到有限的深度。

这个@凌驾语法表示文件中的后续条目可以覆盖以前的条目(通常是从包含的文件中获取的条目)。如果没有这一点,对同一时区缩写的冲突定义将被视为错误。

在未经修改的安装中,文件违约包含世界上大多数地区的所有非冲突时区缩写。其他文件澳大利亚印度这些文件首先包括违约归档,然后根据需要添加或修改缩写。

出于参考目的,标准安装还包含文件非洲txt, 美国txt等,包含根据IANA时区数据库已知正在使用的每个时区缩写的信息。可以根据需要将这些文件中的区域名称定义复制并粘贴到自定义配置文件中。请注意,这些文件不能作为参考文件直接引用时区缩写设置,因为它们的名称中嵌入了点。

# 笔记

如果在读取时区缩写集时出错,则不会应用新值,并保留旧集。如果在启动数据库时出错,则启动失败。

# 小心

配置文件中定义的时区缩写将覆盖PostgreSQL中内置的非时区含义。例如澳大利亚配置文件定义(适用于南澳大利亚标准时间)。当此文件处于活动状态时,不会被认为是星期六的缩写。

# 小心

如果在中修改文件.../共享/时区集/,这取决于您进行备份-正常的数据库转储将不包括此目录。