В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и TIMESTAMP, предназначенные для хранения дат и времени в виде компонентов одного значения. Использование этих типов продемонстрировано в следующем примере.
Эти два типа чаще всего используются для хранения временных отметок, одновременно содержащих информацию о текущем времени и дате, и они также могут пригодиться для приложений, которые выполняют большое количество транзакций с базой данных, и когда требуется хранить временные отметки для отладки или анализа работы системы.
MySQL автоматически заносит в первое поле, объявленное в записи как TIMESTAMP текущую дату и временя, если явно не задано никакого значения для этого поля, или если для этого поля задано значение NULL. Следующий пример наглядно демонстрирует этот эффект.
Эквивалентного результата можно добиться, использовав функцию MySQL NOW() для заполнения текущей даты и времени в поле, объявленном с типом DATETIME.
Эти прекрасные невидимые временные метки!
Существует возможность управлять размером поля TIMESTAMP с помощью спецификатора длины, аналогично тому, как это делается с числовыми типами. Следующая таблица перечисляет различные размеры и соответствующие им форматы2.
Следует заметить, что несмотря на то, что MySQL разрешает использование нестандартных форматов TIMESTAMP, пользоваться ими следует ограниченно. Причина лежит на поверхности: MySQL не имеет возможности использовать в ключах поля TIMESTAMP нестандартных форматов. Форматирование вывода можно получить с помощью функции DATE_FORMAT(), речь о которой пойдет в следующей главе.
Использование модификатора длины отображения поля TIMESTAMP никак не влияет на реальный размер поля или диапазон значений, которые он может сохранять. Задайте сначала короткую длину отображения поля TIMESTAMP, а потом попробуйте увеличить его с помощью команды ALTER TABLE, и вы увидите, как станет видимой ранее скрытая информация. Например:
mysql> CREATE TABLE data (when TIMESTAMP(6));
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO data VALUES (NULL);
Query OK, 1 row affected (0.06 sec)
Такие значения могут проскочить мимо недремлющего ока MySQL, т.к. разработчики MySQL не предусмотрели всесторонней проверки для значений даты и времени. В чем причина? Проверка значений даты и времени все-таки считается задачей прикладного уровня, и поэтому считается нецелесообразным перегружать MySQL всеми мыслимыми и немыслимыми проверками при каждом вводе даты.
ТОП-10 популярных

Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...

Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...

Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...

Все о MySQL. Типы DATETIME и TIMESTAMP
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Типы TEXT и BLOB | Все о MySQL. Сложные типы |