Ядро MySQL само по себе устойчиво к ``проблеме 2000 года'' (see Раздел 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)).
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
