# 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 日。这就是为什么 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年发明了这种历法。中华人民共和国将公历用于民用目的。中国历法用于确定节日。