W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
因?yàn)闀r(shí)區(qū)縮寫并未被很好地標(biāo)準(zhǔn)化,PostgreSQL提供了一種方法來自定義服務(wù)器所接受的縮寫集合。timezone_abbreviations運(yùn)行時(shí)參數(shù)決定活動(dòng)的縮寫集合。雖然這個(gè)參數(shù)可以被任何數(shù)據(jù)庫用戶修改,但它的可能值是受到數(shù)據(jù)庫管理員的控制的 — 它們實(shí)際上是存儲(chǔ)在安裝目錄的
.../share/timezonesets/
子目錄中的一些配置文件。通過在那個(gè)目錄中增加或修改文件,管理員可以為時(shí)區(qū)縮寫設(shè)定本地策略。
timezone_abbreviations
可以被設(shè)置為任何在.../share/timezonesets/
中可以找到的文件名,前提該文件的名字完全是字母的(timezone_abbreviations
中禁止非字母字符防止從預(yù)期目錄的外面讀取文件以及讀取編輯器的備份文件和其他外部文件)。
一個(gè)時(shí)區(qū)縮寫文件可以包含空行和以#
開始的注釋。非注釋行必須具有下列格式之一:
zone_abbreviation
offset
zone_abbreviation
offset
D
zone_abbreviation
time_zone_name
@INCLUDE file_name
@OVERRIDE
一個(gè)zone_abbreviation
就是被定義的縮寫。offset
是一個(gè)整數(shù),它給出以秒計(jì)的到 UTC 的等效偏移量,為正表示東起格林威治,為負(fù)表示西起格林威治。例如, -18000 表示格林威治西邊的五個(gè)小時(shí),或者北美東海岸標(biāo)準(zhǔn)時(shí)間。D
指示該區(qū)域名表示本地夏令時(shí)而非標(biāo)準(zhǔn)時(shí)間。另外,還可以給出一個(gè)
time_zone_name
,在這種情況下會(huì)查閱該時(shí)區(qū)定義,并且會(huì)使用該時(shí)區(qū)中的縮寫含義。這種替代方案只用于那些含義在歷史上有變化的縮寫,因?yàn)楸绕鹗褂靡粋€(gè)固定的整數(shù)值,查找該含義開銷要大得多。
另外,還可以給出一個(gè)time_zone_name
,它引用 IANA 時(shí)區(qū)數(shù)據(jù)庫中定義的時(shí)區(qū)名。這時(shí)會(huì)參考該時(shí)區(qū)的定義來判斷在時(shí)區(qū)中是否有或者使用了該縮寫。如果是,會(huì)使用適當(dāng)?shù)暮x — 也就是正在判斷其值的時(shí)間戳中當(dāng)前使用的含義,或者之前剛剛使用的含義(如果當(dāng)時(shí)不是當(dāng)前),或者最老的含義(如果只在那時(shí)之后用過)。這種行為對(duì)于處理其含義在歷史上變化過的縮寫是至關(guān)重要的。也允許按照縮寫沒有出現(xiàn)在其中的時(shí)區(qū)名來定義縮寫,這樣使用該縮寫就等效于直接寫出該時(shí)區(qū)名。
在定義其 UTC 偏移沒有改變過的縮寫時(shí),使用簡(jiǎn)單的整數(shù)offset
更好,這樣的縮寫在處理時(shí)代價(jià)比那些需要查閱時(shí)區(qū)定義的縮寫更低。
@INCLUDE
語法允許包括.../share/timezonesets/
目錄中 的其它文件。允許進(jìn)行嵌套包括,但是嵌套深度有限制。
@OVERRIDE
語法表示文件中后續(xù)項(xiàng)可以覆蓋前面的項(xiàng)(典型的:從被包括的文件中 得到的項(xiàng))。如果沒有它,同一個(gè)時(shí)區(qū)縮寫的相互沖突的定義會(huì)被認(rèn)為是一種錯(cuò)誤。
在一個(gè)未被修改的安裝中,文件Default
包含用于世界大部分地區(qū)的非沖突時(shí)區(qū)縮 寫。附加文件Australia
和India
被提供給那些地區(qū):這些文件 首先會(huì)包括Default
文件,并且接著根據(jù)需要增加或修改縮寫。
為了便于參考,標(biāo)準(zhǔn)安裝也包含了Africa.txt
、America.txt
等文件,它們包含了所有根據(jù)IANA 時(shí)區(qū)數(shù)據(jù)庫中已知正在使用的時(shí)區(qū)縮寫信息。 如果需要,這些文件中的時(shí)區(qū)名定義可以復(fù)制并粘貼到自定義的配置文件中。注意這些文件名 不能直接被timezone_abbreviations
設(shè)置引用,因?yàn)樗鼈兊拿Q中嵌有句點(diǎn)。
如果在讀取時(shí)區(qū)縮寫集時(shí)發(fā)生錯(cuò)誤,將不會(huì)應(yīng)用任何新值并且保留舊的集合。如果該錯(cuò)誤是在數(shù)據(jù)庫 啟動(dòng)時(shí)發(fā)生,那么啟動(dòng)將失敗。
配置文件中定義的時(shí)區(qū)縮寫將會(huì)覆蓋PostgreSQL中內(nèi)建的非 時(shí)區(qū)含義。例如Australia
配置文件定義了SAT
(南澳洲標(biāo)準(zhǔn)時(shí) 間)。當(dāng)該文件為活動(dòng)時(shí),SAT
將不會(huì)被識(shí)別為周六的縮寫。
如果你修改.../share/timezonesets/
中的文件, 那么你必須自己創(chuàng)建備份 — 因?yàn)橥ǔ5臄?shù)據(jù)庫轉(zhuǎn)儲(chǔ)不會(huì)包括這個(gè)目錄。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: