PostgreSQL 9.3.4 文档 | ||||
---|---|---|---|---|
Prev | Up | Appendix B. 日期/时间支持 | Next |
因为时区缩写并未被很好地标准化,PostgreSQL提供了一种方法来自定义服务器所接受的缩写集合。timezone_abbreviations运行时参数决定活动的缩写集合。虽然这个参数可以被任何数据库用户修改,但它的可能值是受到数据库管理员的控制的 — 它们实际上是存储在安装目录的.../share/timezonesets/子目录中的一些配置文件。通过在那个目录中增加或修改文件,管理员可以为时区缩写设定本地策略。
timezone_abbreviations可以被设置为任何在.../share/timezonesets/中可以找到的文件名,前提该文件的名字完全是字母的(timezone_abbreviations中禁止非字母字符防止从预期目录的外面读取文件以及读取编辑器的备份文件和其他外部文件)。
一个时区缩写文件可以包含空行和以#开始的注释。非注释行必须具有下列格式之一:
time_zone_name offset time_zone_name offset D @INCLUDE file_name @OVERRIDE
一个time_zone_name就是被定义的缩写。offset是以秒计的该区域到 UTC 的偏移量,为正表示东起格林威治,为负表示西起格林威治。例如, -18000 表示格林威治西边的五个小时,或者北美东海岸标准时间。D指示该区域名表示本地夏令时而非标准时间。因为大家都知道时区偏移是以 15 分钟为单位,所以秒数必须是 900 的倍数。
@INCLUDE语法允许包括.../share/timezonesets/目录中的其它文件。允许进行嵌套包括,但是嵌套深度有限制。
@OVERRIDE语法表示文件中后续项可以覆盖前面的项(即从被包括的文件中得到的项)。如果没有它,同一个时区缩写的相互冲突的定义会被认为是一种错误。
在一个未被修改的安装中,文件Default包含用于世界大部分地区的非冲突时区缩写。附加文件Australia和India被提供给那些地区:这些文件首先会包括Default文件,并且接着根据需要增加或修改时区。
为了便于参考,标准安装也包含了Africa.txt、America.txt等文件,它们包含了所有根据zoneinfo时区数据库中已知正在使用的时区缩写信息。 如果需要,这些文件中的时区名定义可以复制并粘贴到自定义的配置文件中。注意这些文件名不能直接被timezone_abbreviations设置引用,因为它们的名称中嵌有句点。
Note: 如果在读取时区数据集时发生错误,将不会应用任何新值而保留旧的集合。如果该错误是在数据库启动时发生,那么启动将失败。
Caution |
配置文件中定义的时区缩写将会覆盖PostgreSQL中内建的非时区含义。例如Australia配置文件定义了SAT(南澳洲标准时间)。当该文件为活动时,SAT将不会被识别为周六的缩写。 |
Caution |
如果你修改.../share/timezonesets/中的文件, 那么你必须自己创建备份 — 因为通常的数据库转储不会包括这个目录。 |