Незалежно від того, чи є "дата" 0000-00-00 "дійсною" датою ", питання не має значення." Просто змінити базу даних "рідко є прийнятним рішенням.
Факти:
- MySQL дозволяє дату зі значенням нулів.
- Ця "особливість" користується широким застосуванням з іншими мовами.
Отже, якщо я "просто зміню базу даних", тисячі рядків PHP-коду зірвуться.
Програмістам Java потрібно прийняти нульову дату MySQL і їм потрібно повернути нульову дату в базу даних, коли інші мови покладаються на цю "функцію".
Програміст, який підключається до MySQL, повинен обробляти нульові і 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 .