Я немного запутался в документации по типу 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 использует двоичный ноль как магическое число?)
Так безопасно ли назначать семантику нулевым временным параметрам в приложении? Или это недокументированная функция, которая может исчезнуть?