Въпреки че @jsnplank е прав, че клеймите за време се третират по различен начин и трябва да помислите за използването на тип данни за дата и час за тези 2 конкретни колони, той обаче не успява да обясни съобщението за грешка.
Съобщението за грешка най-вероятно е резултат от комбинация от начина, по който mysql третира полетата с времеви отпечатъци, когато не е предоставена стойност по подразбиране, и настройките ви за sql режим.
-
Вие дефинирате и двете колони с времеви отпечатъци като ненулеви, без определена зададена стойност по подразбиране. Това означава, че стойността по подразбиране на 1-ва колона timestamp ще бъде current_timestamp() и също така ще бъде актуализирана до current_timestamp() всеки път, когато записът се промени. Ето защо полето за 1-во времеви отпечатък не генерира съобщение за грешка, без значение кое от двете е първото.
Въпреки това, стойността по подразбиране на 2-ра колона с времеви печат, която не е нула, ще бъде „0000-00-00 00:00:00“, ако не дефинирате изрично стойност по подразбиране.
-
Вероятно no_zero_date sql режимът също е активиран на вашия сървър или изрично, или като част от строг sql режим. Този sql режим генерира грешка, ако искате да зададете „0000-00-00 00:00:00“ като стойност по подразбиране или искате да вмъкнете тази стойност в което и да е поле за дата.
Така че можете да използвате тип данни за времеви отпечатък във вашата таблица, но да направите 2-ри нулеви или да предоставите 0 или всяка валидна дата (като епохата) като изрична стойност по подразбиране.
Тъй като маркирате начална и крайна дата с тези полета, използването на дата и час вместо времеви печат като тип данни може да е добра идея.