Ačkoli má @jsnplank pravdu, že s časovými razítky se zachází jinak, a měli byste zvážit použití datového typu datetime pro tyto 2 konkrétní sloupce, nedokáže však vysvětlit chybovou zprávu.
Chybová zpráva je pravděpodobně výsledkem kombinace toho, jak mysql zachází s poli časových razítek, když není zadána žádná výchozí hodnota, a nastavením vašeho režimu SQL.
-
Oba sloupce časových značek definujete jako nenulové, bez nastavené konkrétní výchozí hodnoty. To znamená, že výchozí hodnota sloupce 1. časového razítka bude current_timestamp() a bude také aktualizována na current_timestamp() při každé změně záznamu. To je důvod, proč pole 1. časového razítka negeneruje chybovou zprávu, bez ohledu na to, které z těchto 2 je první.
Pokud však explicitně nedefinujete výchozí hodnotu, bude výchozí hodnota 2. nenulového sloupce časového razítka '0000-00-00 00:00:00'.
Další podrobnosti naleznete v tomto příspěvku na blogu .
-
Pravděpodobně no_zero_date Režim sql je také povolen na vašem serveru buď explicitně, nebo jako součást přísného režimu SQL. Tento režim SQL generuje chybu, pokud chcete nastavit '0000-00-00 00:00:00' jako výchozí hodnotu nebo chcete vložit tuto hodnotu do libovolného pole data.
Ve své tabulce tedy můžete použít datový typ časové razítko, ale u druhého nastavte buď hodnotu null, nebo uveďte 0 nebo jakékoli platné datum (například epochu) jako explicitní výchozí hodnotu.
Vzhledem k tomu, že těmito poli označujete počáteční a koncové datum, může být dobré použít datum a čas místo časového razítka jako datový typ.