PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 附录 B. 日期/时间支持 | 下一页

# 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表示在格林威治以西5小时， 也就是美国东部标准时间。`D`表示该时区使用夏令时而不是标准时。 或者，可以给出`time_zone_name`， 在这种情况下会咨询该时区的定义，并且使用该时区中缩写的含义。 仅建议在时区缩写的含义有历史变更的情况下使用该备选， 因为查找它的含义明显比只是使用一个固定的整数值要昂贵的多。

`@INCLUDE`语法用于包含`.../share/timezonesets/` 目录中的其它文件，可以嵌套包含，不过并不允许无限深度的嵌套。

`@OVERRIDE`语法表示后面项的定义可以覆盖前面的项（典型的，从包含文件中获得）， 没有这一点，同一时区缩写的矛盾定义被认为是一个错误。

默认安装时，`Default`文件包含世界上几乎所有不冲突的时区缩写。 另外，`Australia`和`India`文件用于这些区域： 这些文件首先被包含在`Default`文件中并在随后按需修改或者添加缩写。

为了便于参考，标准安装也包含了`Africa.txt`, `America.txt`等文件， 它们包含了所有IANA时区数据库中的时区缩写。 这些文件中的时区名定义可以复制到自定义的配置文件中。 需要注意的是，这些文件名不能直接用于`timezone_abbreviations` ， 因为这些文件名中包含句点。

> 注意: 如果在读取时区缩写集时出错， 将不会应用任何新值，仍将使用旧的数据集。 如果这个错误是在数据库服务器启动时发生的，那么启动将失败。

小心
配置文件中的时区缩写定义将会覆盖PostgreSQL内置的非时区含义。 例如`Australia`配置文件定义了`SAT`(南澳洲标准时间)， 如果激活了该文件，那么`SAT`将不会被识别为星期六的缩写。

小心
如果你修改`.../share/timezonesets/`中的文件， 那么你必须自己手动备份，因为数据库转储不会包含这个目录的内容。

上一页 | 起始页 | 下一页
日期/时间关键字 | 上一级 | 单位历史