Si la "fecha" '0000-00-00 "es o no una" fecha "válida es irrelevante para la pregunta." Simplemente cambiar la base de datos "rara vez es una solución viable.
Hechos:
- MySQL permite una fecha con el valor de ceros.
- Esta "característica" goza de un uso generalizado con otros idiomas.
Entonces, si "solo cambio la base de datos", se romperán miles de líneas de código PHP.
Los programadores de Java deben aceptar la fecha cero de MySQL y deben volver a poner una fecha cero en la base de datos, cuando otros idiomas confían en esta "característica".
Un programador que se conecta a MySQL necesita manejar nulos y 0000-00-00, así como fechas válidas. Cambiar 0000-00-00 a nulo no es una opción viable, porque entonces ya no puede determinar si se esperaba que la fecha fuera 0000-00-00 para volver a escribir en la base de datos.
Para 0000-00-00, sugiero verificar el valor de la fecha como una cadena, luego cambiarlo a ("y", 1), o ("aaaa-MM-dd", 0001-01-01), o en cualquier valor no válido Fecha MySQL (menos del año 1000, iirc). MySQL tiene otra "característica": las fechas bajas se convierten automáticamente a 0000-00-00.
Me doy cuenta de que mi sugerencia es un error. Pero también lo es el manejo de fechas de MySQL. Y dos errores no lo hacen bien. El hecho es que muchos programadores tendrán que manejar las fechas cero de MySQL para siempre .