第12章: 函数和操作符 / 12.6. MySQL使用什么日历?

MySQL 使用通常所说的 proleptic 阳历

每个将日历由朱利安改为阳历的国家在改变日历期间都不得不删除至少10天。 为了了解其运作,让我们看看158210月,这是由朱利安日历转换为阳历的第一次:

周一

周二

周三

周四

周五

周六

周日

1

2

3

4

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

104 日到1015日之间的日期为空白。这个中断被称为接入。接入前的日期均使用朱利安日历, 而接入后的日期均使用阳历。接入期间的日期是不存在的。

当一个用于日期的日历并为得到实际使用时被称为 proleptic。因此, 若我们假设从来没有接入期的存在,而阳历历法则始终被使用,我们会有一个预期的阳历 。这就是MySQL 所使用的,正如标准SQL所要求的。 鉴于这个原因,作为MySQL DATE DATETIME值而被储存的接入前的日期必须调整这个差异。我们必须明白,接入的发生时间在不同的国家有所不同,而接入的时间越晚,遗失的日期越多。例如,在大不列颠, 接入发生在 1752,这时92日,周三后的第二天为914日,周二; 俄罗斯结束使用朱利安日历的时间为1918,接入过程中遗失天数为 13, 根据阳历,其普遍被称为“10月革命”的发生时间实际上是11月。