Справочное руководство по MySQL

6.2.2.1 Проблема 2000 года и типы данных

    6.2.2.1 Проблема 2000 года и типы данных

    Ядро MySQL само по себе устойчиво к ``проблеме 2000 года'' (see section 1.4.5 Вопросы, связанные с Проблемой-2000), но некоторые представленные в MySQL входные величины могут являться источниками ошибок. Так, любое вводимое значение, содержащее двухразрядное значение года, является неоднозначным, поскольку неизвестно столетие. Подобные величины должны быть переведены в четырехразрядную форму, так как для внутреннего представления года в MySQL используется 4 разряда.

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

    • Величина года в интервале 00-69 конвертируется в 2000-2069.
    • Величина года в интервале 70-99 конвертируется в 1970-1999.

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

    ORDER BY отсортирует двухразрядные YEAR/DATE/DATETIME типы корректно.

    Необходимо также отметить, что некоторые функции, такие как MIN() и MAX() будут преобразовывать TIMESTAMP/DATE в число. Это означает, что столбец с данными типа TIMESTAMP, содержащими год в виде двух разрядов, не будет правильно работать с указанными функциями. Выход из этого положения состоит в преобразовании TIMESTAMP/DATE к четырехразрядному формату или использовании чего-нибудь вроде MIN(DATE_ADD(timestamp,INTERVAL 0 DAYS)).




Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости