MySQL 8.4 Release Notes
13.2.7 MySQL 使用什么日历?
MySQL 使用所谓的 格里高利历(Proleptic Gregorian calendar)。
每个从儒略历转换为格里高利历的国家都需要丢弃至少十天。在了解这个过程中,考虑 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日之间没有日期。这一断续性称为 切换点。任何在切换点之前的日期都是Julian日期,而任何在切换点之后的日期都是Gregorian日期。在切换点期间的日期是不存在的。
在日期上应用日历,但实际上并未使用时称为proleptic。因此,如果我们假设从来没有发生过切换,并且格里高利规则始终有效,我们就有一个proleptic 格里高利日历。这是MySQL所使用的,也是标准SQL要求的缘故。因此,存储在MySQLDATE
或DATETIME
值的日期之前,需要进行调整,以补偿时间差异。需要注意的是,切换并没有在所有国家同时发生,并且晚些发生的国家失去了更多的日子。例如,在英国,这个事件于1752年9月2日星期三后发生了星期四9月14日。俄罗斯直到1918年仍然使用儒略历,过程中损失了13天,而被广泛称为““十月革命””的事件实际上是在格里高利历中的11月发生的。