Spec-Zone .ru
спецификации, руководства, описания, API
|
DATE
,
DATETIME
, и TIMESTAMP
ТипыTIME
ВвестиYEAR
ВвестиYEAR(2)
Ограничения и Переходящий на YEAR(4)
TIMESTAMP
иDATETIME
Дата и типы времени для того, чтобы представить временные значения DATE
, TIME
, DATETIME
, TIMESTAMP
, и YEAR
. У каждого временного типа есть диапазон допустимых значений, так же как
"нулевого" значения, которое может
использоваться, когда Вы определяете недопустимое значение, которое не может представить MySQL. TIMESTAMP
у типа есть специальное автоматическое поведение обновления,
описанное позже. Для временных требований хранения типа см. Раздел
11.6, "Требования Хранения Типа данных".
Имейте в виду эти общие соображения, работая с типами времени и датой:
MySQL получает значения для данной даты, или время вводят формат стандартного вывода, но это пытается интерпретировать множество форматов для входных значений, которые Вы предоставляете (например, когда Вы определяете значение, которое будет присвоено или по сравнению с датой или типом времени). Для описания разрешенных форматов для даты и типов времени, см. Раздел 9.1.3, "Дата и Литералы Времени". Ожидается, что Вы предоставляете допустимые значения. Непредсказуемые результаты могут произойти, если Вы используете значения в других форматах.
Хотя MySQL пытается интерпретировать значения в нескольких форматах, части даты
должны всегда даваться в порядке "день месяца года" (например, '98-09-04'
),
а не в "дневном году месяца" или заказы "дневной год месяца", обычно используемый в
другом месте (например, '09-04-98'
, '04-09-98'
).
Даты, содержащие двухразрядные значения года, неоднозначны, потому что столетие неизвестно. MySQL интерпретирует двухразрядные значения года, используя эти правила:
Год оценивает в диапазоне 70-99
преобразовываются в 1970-1999
.
Год оценивает в диапазоне 00-69
преобразовываются в 2000-2069
.
См. также Раздел 11.3.8, "Двухразрядные Годы в Датах".
Преобразование значений от одного временного типа до другого происходит согласно правилам в Разделе 11.3.7, "Преобразование Между Типами Даты и Времени".
MySQL автоматически преобразовывает дату или временную стоимость к числу, если значение используется в числовом контексте и наоборот.
По умолчанию, когда MySQL встречается со значением для даты или типа времени,
который испытывает недостаток диапазона или иначе недопустимый для типа, это преобразовывает значение в
"нулевое" значение для того типа.
Исключение - это из диапазона TIME
значения отсекаются к соответствующей конечной точке TIME
диапазон.
Устанавливая режим SQL в соответствующее значение, можно определить более точно,
какие даты Вы хотите, чтобы MySQL поддерживал. (См. Раздел 5.1.7,
"Режимы SQL Сервера".) Можно заставить MySQL принимать определенные даты, такой как
'2009-11-31'
, включая ALLOW_INVALID_DATES
Режим SQL. Это полезно, когда Вы хотите сохранить
"возможно неправильно" значение, которое
пользователь определил (например в веб-форме) в базе данных для будущей обработки. Под этим режимом
MySQL проверяет только, что месяц находится в диапазоне от 1 до 12 и что день находится в диапазоне от 1
до 31.
MySQL разрешает Вам хранить даты, где день или месяц и день являются нулем в a DATE
или DATETIME
столбец. Это чрезвычайно полезно для приложений, которые должны сохранить даты рождения, которых Вы не
можете знать точную дату. В этом случае Вы просто храните дату как '2009-00-00'
или '2009-01-00'
. Если Вы
сохраните даты, такие как они, то недопустимо ожидать получать корректные результаты для функций такой
как DATE_SUB()
или DATE_ADD()
это требует полных дат. Чтобы отвергнуть нулевые части месяца или дня в датах, включите NO_ZERO_IN_DATE
Режим SQL.
MySQL разрешает Вам хранить "нулевое"
значение '0000-00-00'
как "фиктивная дата."
Это в некоторых случаях более удобно чем использование NULL
значения, и
использование меньше данных и индексируют пространство. Отвергнуть '0000-00-00'
, включите NO_ZERO_DATE
Режим SQL.
"Нулевая" дата или
временные стоимости, используемые через Соединитель/ODBC, преобразовываются автоматически в NULL
потому что ODBC не может обработать такие значения.
Следующая таблица показывает формат "нулевого"
значения для каждого типа. "Нулевые" значения
являются особенными, но можно сохранить или отослать к ним явно использование значений, показанных в таблице.
Можно также сделать это использование значений '0'
или 0
, которые легче записать. Для временных типов, которые включают часть даты (DATE
, DATETIME
, и TIMESTAMP
),
использование этих значений производит предупреждения если NO_ZERO_DATE
Режим SQL включается.