2025年9月25日: PostgreSQL 18 釋出!
支援版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4

B.6. 單位歷史 #

SQL 標準規定,“在‘日期時間字面量’的定義中,‘日期時間值’受格里高利曆自然日期和時間規則的約束”。 PostgreSQL 遵循 SQL 標準,僅使用格里高利曆計算日期,即使是在該曆法使用之前的年份。此規則被稱為“回溯格里高利曆”。

儒略曆由尤利烏斯·凱撒於公元前 45 年引入。它在西方世界普遍使用,直到 1582 年各國開始改用格里高利曆。在儒略曆中,迴歸年近似為 365 1/4 天 = 365.25 天。這會導致大約 128 年的誤差約為 1 天。

累積的歷法誤差促使教皇格里高利十三世根據特倫特會議的指示改革了曆法。在格里高利曆中,迴歸年近似為 365 + 97 / 400 天 = 365.2425 天。因此,迴歸年相對於格里高利曆發生一天偏移大約需要 3300 年。

365+97/400 的近似值是透過每 400 年有 97 個閏年來實現的,遵循以下規則:

每四年可被 4 整除的年份都是閏年。
然而,每百年可被 100 整除的年份都不是閏年。
然而,每四百年可被 400 整除的年份最終還是閏年。

因此,1700、1800、1900、2100 和 2200 年都不是閏年。但 1600、2000 和 2400 年是閏年。相比之下,在較早的儒略曆中,所有可被 4 整除的年份都是閏年。

1582 年 2 月的教皇詔書規定,1582 年 10 月應刪除 10 天,使 10 月 15 日緊隨 10 月 4 日之後。義大利、波蘭、葡萄牙和西班牙都遵守了這一規定。其他天主教國家不久也跟進,但新教國家不願改變,而希臘東正教國家直到 20 世紀初才改變。英國及其屬地(包括現在的美國)於 1752 年遵守了這一改革。因此,1752 年 9 月 2 日之後是 1752 年 9 月 14 日。這就是為什麼擁有 `cal` 程式的 Unix 系統會產生以下內容:

$ cal 9 1752
   September 1752
 S  M Tu  W Th  F  S
       1  2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

當然,此曆法僅對英國及其屬地有效,而不適用於其他地方。由於追蹤各地不同時期實際使用的歷法會非常困難和令人困惑,PostgreSQL 不會嘗試這樣做,而是對所有日期都遵循格里高利曆規則,即使這種方法並不符合歷史準確性。

世界各地發展出了不同的歷法,許多都早於格里高利曆。例如,中國農曆的起源可以追溯到公元前 14 世紀。傳說黃帝於公元前 2637 年發明了該曆法。中華人民共和國出於民事目的使用格里高利曆。中國農曆用於確定節日。

提交更正

如果您在本文件中發現任何不正確之處、與您對特定功能的實際體驗不符或需要進一步澄清的內容,請使用此表單報告文件問題。