受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

B.6. 历法的历史 #

SQL 标准指出,日期时间字面量的定义中,日期时间值受格里高利历中日期和时间自然规则的约束PostgreSQL 遵循 SQL 标准的做法,即便对于该历法尚未实际使用之前的年份,也完全按照格里高利历计算日期。这一规则称为 外推格里高利历

儒略历由 Julius Caesar 于公元前 45 年引入。在 1582 年各国开始改用格里高利历之前,它在西方世界一直被广泛使用。在儒略历中,回归年近似为 365 1/4 天 = 365.25 天。这会在大约 128 年里累计 1 天的误差。

不断累积的历法误差促使教皇格里高利十三世按照特伦托会议的指示改革历法。在格里高利历中,回归年近似为 365 + 97 / 400 天 = 365.2425 天。因此,大约要经过 3300 年,回归年与格里高利历之间才会累积出 1 天的偏差。

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 年发明了这种历法。 中华人民共和国在民用方面使用格里高利历。中国历法则用于确定节日。

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。