支持的版本:当前 (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 年发明了该历法。中华人民共和国在民事方面使用格里高利历。中国历法用于确定节日。

提交更正

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