Существуют следующие типы данных даты и времени: DATETIME
, DATE
, TIMESTAMP
, TIME
и YEAR
. Каждый из них имеет интервал допустимых значений, а также значение ``ноль'', которое используется, когда пользователь вводит действительно недопустимое значение. Отметим, что MySQL позволяет хранить некоторые не вполне достоверные значения даты, например 1999-11-31
. Причина в том, что, по нашему мнению, управление проверкой даты входит в обязанности конкретного приложения, а не SQL-серверов. Для ускорения проверки правильности даты MySQL только проверяет, находится ли месяц в интервале 0-12
и день в интервале 0-31
. Данные интервалы начинаются с 0
, это сделано для того, чтобы обеспечить для MySQL возможность хранить в столбцах DATE
или DATETIME
даты, в которых день или месяц равен нулю. Эта возможность особенно полезна для приложений, которые предполагают хранение даты рождения - здесь не всегда известен день или месяц рождения. В таких случаях дата хранится просто в виде 1999-00-00
или 1999-01-00
(при этом не следует рассчитывать на то, что для подобных дат функции DATE_SUB()
или DATE_ADD
дадут правильные значения).
Ниже приведены некоторые общие соображения, полезные при работе с типами данных даты и времени:
год-месяц-день
(например, '98-09-04'
), а не в порядке месяц-день-год
или день-месяц-год
, т.е. не так, как мы их обычно записываем (например '09-04-98'
, '04-09-98'
).TIME
, которые усекаются до соответствующей граничной точки заданного интервала TIME
). В следующей таблице представлены форматы значения ``ноль'' для каждого из типов столбцов:Тип столбца | Значение ``Ноль'' |
DATETIME | '0000-00-00 00:00:00' |
DATE | '0000-00-00' |
TIMESTAMP | 00000000000000 (длина зависит от количества выводимых символов) |
TIME | '00:00:00' |
YEAR | 0000 |
NULL
в версии MyODBC 2.50.12 и выше, так как ODBC не оперирует с подобными величинами.Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.