MySQL 8.4 版本注意事項
MySQL 使用一種稱為前置格里高利曆的曆法。
每個從儒略曆切換到格里高利曆的國家,在切換時都必須捨棄至少十天。要了解這如何運作,請考慮 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 日之間沒有日期。這種不連續性稱為轉換點。轉換點之前的任何日期都是儒略曆,而轉換點之後的任何日期都是格里高利曆。轉換期間的日期不存在。
應用於實際未使用時的日期的曆法稱為前置。因此,如果我們假設從未發生過轉換,並且格里高利曆規則始終適用,那麼我們就有了前置格里高利曆。這就是 MySQL 使用的曆法,也是標準 SQL 的要求。因此,必須調整儲存在 MySQL DATE
或 DATETIME
值中的轉換之前的日期,以補償差異。重要的是要意識到,轉換並非在所有國家/地區同時發生,並且發生得越晚,損失的天數就越多。例如,在英國,它發生在 1752 年,當時 9 月 2 日星期三之後是 9 月 14 日星期四。俄羅斯一直使用儒略曆到 1918 年,過程中損失了 13 天,而通常所說的「十月革命」根據格里高利曆發生在 11 月。