Apakah "tanggal" '0000-00-00 "adalah" tanggal "yang valid tidak relevan dengan pertanyaan." Ubah saja database "jarang merupakan solusi yang layak.
Fakta:
- MySQL memungkinkan tanggal dengan nilai nol.
- "Fitur" ini menikmati penggunaan luas dengan bahasa lain.
Jadi, jika saya "hanya mengubah database", ribuan baris kode PHP akan rusak.
Pemrogram Java harus menerima tanggal nol MySQL dan mereka harus mengembalikan tanggal nol ke dalam basis data, ketika bahasa lain bergantung pada "fitur" ini.
Seorang programmer yang terhubung ke MySQL perlu menangani null dan 0000-00-00 serta tanggal yang valid. Mengubah 0000-00-00 menjadi nol bukanlah opsi yang dapat dilakukan, karena Anda tidak dapat lagi menentukan apakah tanggal tersebut diharapkan menjadi 0000-00-00 untuk penulisan kembali ke database.
Untuk 0000-00-00, saya sarankan memeriksa nilai tanggal sebagai string, kemudian mengubahnya ke ("y", 1), atau ("yyyy-MM-dd", 0001-01-01), atau menjadi tidak valid Tanggal MySQL (kurang dari tahun 1000, iirc). MySQL memiliki "fitur" lain: tanggal rendah secara otomatis dikonversi ke 0000-00-00.
Saya menyadari saran saya adalah kludge. Namun begitu juga dengan penanganan tanggal MySQL. Dan dua kludges tidak memperbaikinya. Faktanya adalah, banyak programmer harus menangani nol-tanggal MySQL selamanya .