Навигация

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

Партнеры

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

Статистика

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

Типы даты и времени в MySQL

Главная Страница » Книги по PHP » MySQL уроки для начинающих с нуля » Типы даты и времени в MySQL

В этом разделе рассматриваются типы для хранения даты и времени: DATETIME, DATE, TIMESTAMP, TIME и YEAR. Это очень сложная тема, в основном потому, что в целях оптимальной работы с таким важным понятием, как время, в MySQL введено немало разных типов данных (и подводных камней в них). Будьте внимательны, как при чтении главы, так и при работе с реальными данными!

Каждый из этих типов имеет диапазон допустимых значений, также как и некий ноль, который используется, когда вы определяете действительно запрещенное значение. Обратите внимание, что MySQL позволяет сохранять некоторые недопустимые значения даты, например 1999-11-31. Причина в том, что обрабатывать проверку даты - ответственность прикладной программы, а не сервера SQL.

Для особой быстроты проверки даты, MySQL проверяет только то, что месяц находится в диапазоне 0-12, и день находится в диапазоне 0-31. Вышеупомянутые диапазоны определены так потому, что MySQL позволяет сохранять в столбцах DATE или DATETIME даты, в которых день или месяц нулевой.

Это чрезвычайно полезно для прикладных программ, которые должны сохранить дату рождения, которой вы не знаете. В этом случае вы просто сохраняете дату подобно 1999-00-00 или 1999-01-00.

Имеются некоторые общие вещи, которые стоит иметь в виду при работе с типами даты и времени:

  • MySQL возвращает значения для данного типа в стандартном формате, но пытается интерпретировать ряд форматов для значений, которые вы обеспечиваете (например, когда вы определяете значение, которое будет назначено переменной или сравниваться). Однако поддержаны только форматы, описанные в следующих разделах. Ожидается, что вы обеспечите допустимые значения, и непредсказуемые результаты могут быть получены, если вы используете значения в других форматах. Проверка правильности значений возложена на вас;
  • Хотя MySQL пробует интерпретировать значения в нескольких форматах, он всегда ожидает, что год находится с левого края. Даты должны быть заданы только в порядке год-месяц-день (например, 98-09-04);
  • MySQL автоматически преобразует значения даты и времени в числа, если значение используется в числовом контексте, и наоборот;
  • Когда MySQL сталкивается со значением, которое находится вне диапазона или запрещено для типа каким-то другим способом, он устанавливает значение «ноль» для этого типа. Заметьте, что под нолем здесь понимается не 0, а некое нулевое значение для этого типа! Исключительная ситуация: вышедшие за границу диапазона значения TIME урезаются до соответствующей границы. Табл. 5.1 ниже показывает нулевые значения для каждого типа:
  • Таблица 5.1. Нулевые значения для каждого типа.

    Тип столбца Нулевое значение
    DATETIME “0000-00-00 00:00:00”
    DATE “0000-00-00”
    TIMESTAMP 00000000000000 (длина зависит от размера отображения)
    TIME '00:00:00'
    YEAR 0000
  • нулевое значение имеет особый статус, но вы можете сохранять его или обращаться к нему, явно используя значения, показанные в таблице. Вы можете также делать это, применяя значения “0” или 0.