# 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 будут приведены к ближайшему большему четному числу.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://olexsyn.gitbook.io/enote/data/mysql/datatype/timestamp.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
