Является ли «дата» «0000-00-00» действительной «датой», не имеет отношения к вопросу. «Просто измените базу данных» редко бывает жизнеспособным решением.
Факты:
- MySQL допускает дату со значением нулей.
- Эта «функция» широко используется в других языках.
Итак, если я «просто изменю базу данных», тысячи строк кода PHP выйдут из строя.
Программистам на Java необходимо принять нулевую дату MySQL и вернуть нулевую дату в базу данных, когда другие языки полагаются на эту «функцию».
Программист, подключающийся к MySQL, должен обрабатывать null и 0000-00-00, а также действительные даты. Изменение 0000-00-00 на null не является жизнеспособным вариантом, потому что тогда вы больше не сможете определить, ожидалась ли дата, равная 0000-00-00 для обратной записи в базу данных.
Для 0000-00-00 я предлагаю проверить значение даты в виде строки, а затем изменить ее на ("y", 1) или ("yyyy-MM-dd", 0001-01-01) или на любое недопустимое Дата MySQL (менее 1000 года, iirc). У MySQL есть еще одна «особенность»: младшие даты автоматически конвертируются в 0000-00-00.
Я понимаю, что мое предложение - путаница. Но то же самое с обработкой дат MySQL. А два кладжа не исправят. Дело в том, что многие программисты должны будут обрабатывать MySQL нулевые даты навсегда .