Även om @jsnplank har rätt i att tidsstämplar behandlas olika och du bör överväga att använda datetime datatype för dessa 2 specifika kolumner, men han misslyckas med att förklara felmeddelandet.
Felmeddelandet är troligen resultatet av en kombination av hur mysql behandlar tidsstämpelfält när inget standardvärde anges och dina sql-lägesinställningar.
-
Du definierar båda tidsstämpelkolumnerna som inte null, utan något specifikt standardvärde. Det betyder att den första tidsstämpelkolumnens standardvärde kommer att vara current_timestamp() och kommer också att uppdateras till current_timestamp() när posten ändras. Det är därför det första tidsstämpelfältet inte genererar ett felmeddelande, oavsett vilken av de två som är den första.
Den andra inte null tidsstämpelns standardvärde kommer dock att vara '0000-00-00 00:00:00' om du inte uttryckligen definierar ett standardvärde.
-
Förmodligen no_zero_date sql-läge är också aktiverat på din server antingen uttryckligen eller som en del av strikt sql-läge. Detta sql-läge genererar ett felmeddelande om du vill ställa in '0000-00-00 00:00:00' som ett standardvärde eller om du vill infoga detta värde i ett datumfält.
Så du kan använda tidsstämpeldatatyp i din tabell, men gör den andra antingen nollbar eller ange 0 eller något giltigt datum (som epoken) som ett explicit standardvärde.
Eftersom du markerar start- och slutdatum med dessa fält, kan det vara en bra idé att ändra datumtid istället för tidsstämpel som datatyp.