扩展 MySQL 8.0 / 第 6 章 向 MySQL 添加函数 /
12.9 MySQL 使用什么日历?
MySQL 使用所谓的proleptic Gregorian 日历。
每个从儒略历转换为公历的国家都必须在转换期间放弃至少十天。要了解这是如何工作的,请考虑 1582 年 10 月,当时发生了第一次儒略到格里高利转换。
周一 | 周二 | 周三 | 周四 | 星期五 | 周六 | 星期日 |
---|---|---|---|---|---|---|
1个 | 2个 | 3个 | 4个 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
10 月 4 日和 10 月 15 日之间没有日期。这种不连续性称为 切换。转换之前的任何日期都是 Julian,转换之后的任何日期都是 Gregorian。切换期间的日期不存在。
应用于未实际使用的日期的日历称为proleptic。因此,如果我们假设从不存在转换并且公历规则始终占主导地位,那么我们就有了一个公历。这是 MySQL 使用的,正如标准 SQL 所要求的那样。因此,转换之前的日期存储为 MySQL
DATE
或
DATETIME
必须调整值以补偿差异。重要的是要认识到切换并不是在所有国家同时发生的,发生的越晚,损失的天数就越多。例如,在英国,它发生在 1752 年,9 月 2 日星期三之后是 9 月 14 日星期四。俄罗斯在 1918 年之前一直沿用儒略历,在此过程中减少了 13 天,也就是通常所说的“十月”革命”发生在公历十一月。