MySQL / 5. Работа с датами и временем

Использование значений TIMESTAMP

Задача
Вы хотите, чтобы при создании или изменении записи автоматически фиксировалось время этого события.

Решение
Используйте столбец типа TIMESTAMP. Но необходимо отметить, что он обладает некоторыми нетривиальными свойствами, так что этот раздел призван познакомить вас с тем, что вы получите. Следующие несколько разделов описывают возможности применения столбцов TIMESTAMP.

Обсуждение
MySQL поддерживает тип столбцов TIMESTAMP, во многом похожий на тип DATETIME. Однако у TIMESTAMP есть и некоторые особенности:

• Первый столбец TIMESTAMP особенным образом ведет себя при создании записи: его значение по умолчанию равно текущей дате и времени. То есть для него не нужно указывать значение в предложении INSERT, если вы хотите, чтобы в столбце хранилось время создания записи. MySQL автоматически инициализирует его. То же самое происходит при установке столбца в NULL при создании записи.

• Первый столбец TIMESTAMP обрабатывается особым образом и при любом изменении текущих значений строк. MySQL автоматически обновляет его значение, присваивая время и дату изменения. Запомните: обновление происходит, только если значение столбца действительно изменилось; если установлено прежнее значение, столбец TIMESTAMP не будет изменен.

• Другим столбцам TIMESTAMP таблицы не присущи свойства, описанные ранее. Их значение по умолчанию равно нулю, а не текущей дате и времени. Их значения не изменяются автоматически при изменении других столбцов, при необходимости вы должны изменять их самостоятельно.

• Столбец TIMESTAMP можно в любой момент установить в текущую дату и время путем установки его в NULL. Это касается всех столбцов TIMESTAMP, а не только первого. Свойства TIMESTAMP, относящиеся к созданию и изменению записи, делают этот тип чрезвычайно удобным для решения некоторых видов задач, таких как автоматическая регистрация времени вставки или изменения строк таблицы. Но у этого типа есть и свойства, ограничивающие его применение:

• Значения TIMESTAMP имеют формат CCYYMMDDhhmmss, который интуитивно не вполне понятен и не очень удобен для восприятия, так что при выводе часто требуется переформатирование.

• Диапазон значений TIMESTAMP начинается в начале 1970 года и продолжается до 2037 года. Если вам необходим более широкий диапазон, используйте значения DATETIME.В следующих разделах показано, как воспользоваться достоинствами типа TIMESTAMP.

Статьи по MySQL на эту тему:

Вывод значений TIMESTAMP в удобном для чтения виде
Вычисления со значениями TIMESTAMP Задача
Регистрация времени последнего изменения строки
Регистрация времени создания записи

Вернуться в раздел: MySQL / 5. Работа с датами и временем