MySQL 8.3 Release Notes
MySQL 使用的是所谓的 普罗列普特格雷戈里历。
每个从儒略历转换到格雷戈里历的国家都必须舍弃至少十天。在第一次儒略历到格雷戈里历的转换中,考虑 1582 年 10 月的情况。
Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday |
---|---|---|---|---|---|---|
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 日之间没有日期。这段不连续性称为 切换期。任何在切换期之前的日期都是儒略历,而任何在切换期之后的日期都是格雷戈里历。在切换期内的日期是不存在的。
将日历应用于实际上不使用的日期称为 普罗列普特。因此,如果我们假设从不曾有过切换期,并且格雷戈里规则一直适用,那么我们就有了一个普罗列普特格雷戈里历。这正是 MySQL 使用的,也是标准 SQL 所要求的。因此,在 MySQL 中存储的日期之前的 DATE
或 DATETIME
值必须调整以补偿差异。重要的是要意识到切换期并不是在所有国家同时发生的,而是随着时间的推移,失去的天数也越来越多。例如,在英国,切换期发生在 1752 年,当时星期三 9 月 2 日紧接着星期四 9 月 14 日。俄罗斯直到 1918 年才从儒略历转换到格雷戈里历,失去了 13 天,并且所谓的 “十月革命” 实际上发生在格雷戈里历的十一月。