Możesz grać z sql_mode
aby zmienić zachowanie, w jaki MySQL obsługuje nieprawidłową datę.
Zgodnie z podręcznikiem MySQL , dzieje się tak, gdy wstawisz nieprawidłową wartość daty:
Tak więc wstawiana jest wartość zero i faktycznie otrzymujesz ostrzeżenie o tym. Możesz to zobaczyć za pomocą show warnings
polecenie.
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
Możesz zmienić to zachowanie, aby przechowywać nieprawidłową wartość, jeśli potrzebujesz (Podręcznik MySQL ):
Na przykład powinno działać:
set @@sql_mode='allow_invalid_dates';
insert into TableName (`date`) values ('2015-02-29');
-- 1 row(s) affected
Możesz też zmienić zachowanie ładuj dane lub wstaw, aby zgłosić błąd:
Przykład:
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