2024年9月26日: PostgreSQL 17 发布!
支持版本:当前 (17) / 16 / 15 / 14 / 13 / 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 年发明了该日历。中华人民共和国在民用方面使用公历。中国日历用于确定节日。

提交更正

如果您在文档中发现任何不正确的内容,与您对特定功能的体验不符,或者需要进一步澄清,请使用此表单 报告文档问题。