Loading...
MySQL 9.5 Reference Manual 9.5의 13.2.7 What Calendar Is Used By MySQL?의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
MySQL은 proleptic Gregorian calendar를 사용합니다.
Julian calendar에서 Gregorian calendar로 전환한 모든 국가는 전환 과정에서 최소한 10일을 버려야 했습니다. 이것이 어떻게 동작하는지 보려면, 최초의 Julian-to-Gregorian 전환이 일어났던 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일 사이에는 날짜가 존재하지 않습니다. 이 불연속성을 cutover라고 부릅니다. cutover 이전의 모든 날짜는 Julian이고, cutover 이후의 모든 날짜는 Gregorian입니다. cutover 기간의 날짜는 존재하지 않습니다.
어떤 달력이 실제로 사용되지 않았던 시점의 날짜에 적용되면 이를 proleptic이라고 부릅니다. 따라서 cutover가 전혀 없었고 Gregorian 규칙이 항상 적용되었다고 가정하면, 우리는 proleptic Gregorian calendar를 갖게 됩니다. 이것이 바로 표준 SQL에 의해 요구되는 것이며, MySQL에서 사용되는 달력입니다.
이러한 이유로, cutover 이전의 날짜를 MySQL DATE 또는 DATETIME 값으로 저장할 때는 그 차이를 보정하도록 조정해야 합니다.
중요한 점은 cutover가 모든 국가에서 같은 시점에 일어난 것이 아니며, 시기가 늦을수록 손실된 날의 수가 더 많아졌다는 것입니다. 예를 들어, 영국에서는 1752년에 cutover가 일어났고, 9월 2일 수요일 다음이 9월 14일 목요일이었습니다. 러시아는 1918년까지 Julian calendar를 유지했고, 그 과정에서 13일을 잃었습니다. 이 때문에 대중적으로 “10월 혁명”이라고 불리는 사건은 Gregorian calendar로 보면 11월에 발생한 것입니다.
13.2.6 Fractional Seconds in Time Values
13.2.8 Conversion Between Date and Time Types