Использование нулевого значения в столбцах MySQL типа TIMESTAMP - PullRequest
3 голосов
/ 12 июля 2010

Я немного запутался в документации по типу TIMESTAMP в MySQL и о том, безопасно ли использовать нулевое значение. В руководстве написано :

Тип данных TIMESTAMP имеет диапазон от «1970-01-01 00:00:01» UTC до «2038-01-19 03:14:07» UTC. ...

, что означает, что значение «0000-00-00 00:00:00» выходит за пределы допустимого диапазона и поэтому недействительно. Но, насколько я вижу, в руководстве нет ничего общего с этим. Также прямо не говорится, что «0000-00-00 00:00:00» является действительным значением.

Практика показывает, что '0000-00-00 00:00:00' работает, а руководство действительно говорит , что:

CREATE TABLE t (ts TIMESTAMP DEFAULT 0);

является действительным MySQL SQL. На практике это приводит к вставке значений по умолчанию для «0000-00-00 00:00:00».

(Все это согласуется с любопытным фактом, что «1970-01-01 00:00:00» выходит за пределы допустимого диапазона, что, IIRC, не относится к случаю unix для uint32. Возможно, MySQL использует двоичный ноль как магическое число?)

Так безопасно ли назначать семантику нулевым временным параметрам в приложении? Или это недокументированная функция, которая может исчезнуть?

1 Ответ

3 голосов
/ 12 июля 2010

Типы даты и времени для представления временных значений: DATETIME, DATE, TIMESTAMP, TIME и YEAR.Каждый временной тип имеет диапазон допустимых значений, а также «нулевое» значение, которое может использоваться, когда вы указываете недопустимое значение, которое MySQL не может представлять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...