sql >> Databasteknik >  >> RDS >> Mysql

mysql infogar ett tomt datum om datumet inte är korrekt

Du kan spela med sql_mode för att ändra beteendet hur MySQL hanterar det ogiltiga datumet.

Enligt MySQL-manualen , detta händer när du infogar ett felaktigt datumvärde:

Så ett nollvärde infogas och du får faktiskt en varning om det. Du kan se det med show warnings kommando.

insert into TableName (`date`) values ('2015-02-29');
-- 1 row(s) affected
show warnings
-- Warning  1264    Out of range value for column 'date' at row 1

Du kan ändra detta beteende för att lagra det ogiltiga värdet om du behöver det (MySQL-manual ):

Till exempel bör följande fungera:

set @@sql_mode='allow_invalid_dates';
insert into TableName (`date`) values ('2015-02-29');
-- 1 row(s) affected

Eller så kan du också ändra beteendet för ladda in data eller infoga för att rapportera felet:

Exempel:

set @@sql_mode='traditional';
insert into TableName (`date`) values ('2015-02-29');
Error Code: 1292. Incorrect date value: '2015-02-29' for column 'date' at row 1



  1. Fråga för att få lägsta värde som är större än noll och är inte NULL

  2. Dynamiska tabell-/entitetsnamn i Doktrin 2

  3. Byta namn på en InnoDB-tabell utan att uppdatera referenser för främmande nyckel till den?

  4. Hur rensar man mysql-skärmkonsolen i Windows?