MySQL сам по себе защищен от влияния проблемы 2000-го года (см. раздел Решение проблемы 2000 года), но входные значения, представляемые MySQL, могут быть не защищены. Любой ввод, содержащий двузначное представление года, является неоднозначным, поскольку не указан век. Такие значения должны быть преобразованы в четырехзначную форму, потому что MySQL хранит значения лет во внутреннем представлении длиной в четыре цифры.
Для типов DATETIME, date, TIMESTAMP и YEAR MySQL интерпретирует даты с неоднозначным представлением года по следующим правилам:
- Год в диапазоне 00-69 преобразуется в 2000-2069.
- Год в диапазоне 70-99 преобразуется в 1970-1999.
Помните, что эти правила представляют только обоснованные предположения об истинном значении ваших данных. Если они не верны, вы должны однозначно указывать их, используя четырехзначный формат.
Конструкция ORDER BY правильно сортирует значения TIMESTAMP и YEAR с двузначным годом.
Некоторые функции, такие как MIN() и МАХ(), преобразуют TIMESTAMP или YEAR в число. Это означает, что значения с двузначным годом не работают правильно с этими функциями. Чтобы исправить ситуацию, нужно преобразовать столбцы TIMESTAMP или YEAR в четырехзначный формат года или использовать что-то вроде:
MIN(DATE_ADD(timestamp,INTERVAL 0 DAYS))