12.8 MySQL 使用什么 calendar?

MySQL 使用所谓的多历公历。

从儒略历转换为公历的每个国家都必须在转换期间至少放弃 10 天。要了解其工作原理,请考虑 1582 年 10 月,即第一次朱利安到格里高利安的转换。

MondayTuesdayWednesdayThursdayFridaySaturdaySunday
1234151617
18192021222324
25262728293031

在 10 月 4 日到 10 月 15 日之间没有日期。这种间断称为过渡。割接之前的任何日期都是朱利安,割接之后的任何日期都是公历。转换期间的日期不存在。

适用于不实际使用的日期的 calendar 称为多用 calendar。因此,如果我们假设从未有过割礼,而格里高利规则总是占统治地位,那么我们就有一个多产的格里高利 calendar。这是 MySQL 使用的,这是标准 SQL 所要求的。因此,必须调整转换前存储为 MySQL DATEDATETIME值的日期,以补偿差异。重要的是要认识到,并非所有国家都在同一时间进行转换,而且转换发生得越晚,损失的时间就越多。例如,在英国,发生在 1752 年,9 月 2 日(星期三)之后是 9 月 14 日(星期四)。俄罗斯一直使用儒略历,直到 1918 年,在此过程中损失了 13 天,通常被称为“十月”。根据公历,“革命”发生在 11 月。