> For the complete documentation index, see [llms.txt](https://olexsyn.gitbook.io/enote/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://olexsyn.gitbook.io/enote/data/mysql/datatype/timestamp.md).

# TIMESTAMP

Тип столбца `TIMESTAMP` обеспечивает тип представления данных, который можно использовать для автоматической записи текущих даты и времени при выполнении операций `INSERT` или `UPDATE`. При наличии нескольких столбцов типа `TIMESTAMP` ***только первый*** из них обновляется автоматически.

Автоматическое обновление первого столбца с типом `TIMESTAMP` происходит при выполнении любого из следующих условий:

* Столбец не указан явно в команде `INSERT` или `LOAD DATA IN`.
* Столбец не указан явно в команде `UPDATE`, и при этом изменяется величина в некотором другом столбце (следует отметить, что команда `UPDATE`, устанавливающая столбец в то же самое значение, которое было до выполнения команды, не вызовет обновления столбца `TIMESTAMP`, поскольку в целях повышения производительности MySQL игнорирует подобные обновления при установке столбца в его текущее значение).
* Величина в столбце `TIMESTAMP` явно установлена в `NULL`.

Для остальных (кроме первого) столбцов типа TIMESTAMP также можно задать установку в значение текущих даты и времени. Для этого необходимо просто установить столбец в `NULL` или в `NOW()`.

Любой столбец типа `TIMESTAMP` (даже первый столбец данного типа) можно установить в значение, отличное от текущих даты и времени. Это делается путем явной установки его в желаемое значение. Данное свойство можно использовать, например, если необходимо установить столбец `TIMESTAMP` в значение текущих даты и времени при создании строки, а при последующем обновлении этой строки значение столбца не должно изменяться:

* Пусть MySQL автоматически установит значение столбца с типом `TIMESTAMP` при создании данной строки. Столбец будет установлен в исходное состояние со значением текущих даты и времени.
* При выполнении последующих обновлений других столбцов в данной строке необходимо явно установить столбец `TIMESTAMP` в его текущее значение.

Однако, с другой стороны, для этих целей, возможно, будет проще использовать столбец `DATETIME`. При создании строки его следует инициализировать функцией `NOW()` и оставить в покое при последующих обновлениях.

Величины типа `TIMESTAMP` могут принимать значения от начала 1970 года до некоторого значения в 2037 году с разрешением в одну секунду. Эти величины выводятся в виде числовых значений.

Формат данных, в котором MySQL извлекает и показывает величины `TIMESTAMP`, зависит от количества показываемых символов. Это проиллюстрировано в приведенной ниже таблице. Полный формат `TIMESTAMP` составляет 14 десятичных разрядов, но можно создавать столбцы типа `TIMESTAMP` и с более короткой строкой вывода:

| Тип столбца   | Формат вывода  |
| ------------- | -------------- |
| TIMESTAMP(14) | YYYYMMDDHHMMSS |
| TIMESTAMP(12) | YYMMDDHHMMSS   |
| TIMESTAMP(10) | YYMMDDHHMM     |
| TIMESTAMP(8)  | YYYYMMDD       |
| TIMESTAMP(6)  | YYMMDD         |
| TIMESTAMP(4)  | YYMM           |
| TIMESTAMP(2)  | YY             |

Независимо от размера выводимого значения размер данных, хранящихся в столбцах типа `TIMESTAMP`, всегда один и тот же. Чаще всего используется формат вывода с 6, 8, 12 или 14 десятичными знаками. При создании таблицы можно указать произвольный размер выводимых значений, однако если этот размер задать равным 0 или превышающим 14, то будет использоваться значение 14. Нечетные значения размеров в интервале от 1 до 13 будут приведены к ближайшему большему четному числу.
