Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

B.6. 时间单位的历史 #

SQL 标准指出,“在 'datetime literal' 的定义中,“datetime 值”受公历中日期和时间的自然规则约束”。 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 年可被整除的年份都是闰年。

教皇诏书 (2 月 1582 年)规定 10 月 1582 年应该减少 10 天,以便 10 月 15 日紧随 10 月 4 日之后。意大利、波兰、葡萄牙和西班牙都遵守了这条规定。其他天主教国家也在不久之后遵守这一规定,但新教国家不愿改变,希腊东正教国家直到 20 世纪初才改变。大不列颠及其自治领(包括现今的美国)于 1752 年遵守了这一改革。因此,1752 年 9 月 2 日之后是 1752 年 9 月 14 日。这就是 Unix 系统具有 cal 程序的原因,该程序提供以下信息

$ 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 年发明了该日历。中华人民共和国出于公民目的,使用的是格里高利历。中国农历用于确定节日。