Você pode jogar com o
sql_mode
para alterar o comportamento como o MySQL trata a data inválida. De acordo com o manual MySQL , isso acontece quando você insere um valor de data incorreto:
Então, um valor zero é inserido e você realmente recebe um aviso sobre isso. Você pode ver isso com o
show warnings
comando. 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
Você pode alterar esse comportamento para armazenar o valor inválido, se necessário (Manual MySQL ):
Por exemplo, o seguinte deve funcionar:
set @@sql_mode='allow_invalid_dates';
insert into TableName (`date`) values ('2015-02-29');
-- 1 row(s) affected
Ou você também pode alterar o comportamento de load data ou insira para relatar o erro:
Exemplo:
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