Навигация

Поиск по Сайту

Партнеры

Самоучитель. Книги.

Статистика

    Каталог@Mail.ru - каталог ресурсов интернет

Проблема Y2K (2000 года) и типы Date в MySQL

Главная Страница » Книги по PHP » MySQL уроки для начинающих с нуля » Проблема Y2K (2000 года) и типы Date в MySQL

Непосредственно для MySQL У2К-безопасен, но вот для вводимых значений - напротив. Любой ввод, содержащий значения года с 2 цифрами, неоднозначен потому, что столетие неизвестно. Такие значения должны интерпретироваться в форме с 4 цифрами, потому что MySQL сохраняет годы, внутренне всегда используя четыре цифры.

Для типов DATETIME, DATE, TIMESTAMP и YEAR MySQL интерпретирует даты с неоднозначным годом так:

  • Значения года в диапазоне от 00 до 69 будут преобразованы в значения от 2000 до 2069;
  • Значения года в диапазоне от 70 до 99 будут преобразованы в значения от 1970 до 1999.

Не забудьте, что эти правила обеспечивают только приемлемые предположения относительно того, что ваши данные означают. Если логика, используемая MySQL, не производит правильных значений, вы должны сами обеспечить однозначный ввод, содержащий значения года с 4 цифрами.

Обратите внимание, что инструкция ORDER BY сортирует значения типов YEAR, DATE и DATETIME С 2 цифрами правильно.

Обратите внимание также, что некоторые функции, подобно MIN() и МАХ(), преобразуют типы TIMESTAMP и DATE в число. Это означает, что timestamp с годом с 2 цифрами не будет работать правильно с этими функциями. Исправление в этом случае должно преобразовать TIMESTAMP или DATE в формат года с 4 цифрами или использовать нечто вроде MIN(DATE_ADD (timestamp, INTERVAL О DAYS)).