La fecha 0000-00-00 de MySql
Visita este artículo en http://www.estadobeta.com/2008/02/12/la-fecha-0000-00-00-de-mysql/
Por vladimir en Desarrollo, artículos, tipsIndudablemente MySql posee muchas características destacables, pero si hay una que molesta mucho, es el tratamiento que le da a las fechas. Al definir una columna de tipo DATE y permitiendo valores nulos, MySql automáticamente transforma esos valores nulos en la fecha ‘0000-00-00′.
Este tratamiento puede ser sobrellevado de diferentes maneras en el lenguaje con el cual trabajas, pero en ocasiones ciertos lenguajes/aplicaciones requieren que esta fecha sea nula o una fecha válida. Después de muchos cabezazos frente al teclado llegué a la conclusión de que Birt (en el fondo es Java el que reclama) se caía con el valor de esta extraña fecha.
Luego de navegar por la lista de correo, el workaround es relativamente simple y puede servir para muchos lenguajes (no sólo Java) ya que es a nivel de la sql. Se trata de utilizar la función if de MySql (no confundir con la sentencia if) la cual ha de chequear el valor de la fecha y si es ‘0000-00-00′ devolver el valor válido que deseamos.
Ejemplo:
# sql original SELECT nombre, apellido, fecha_nacimiento FROM personas #sql modificada SELECT nombre, apellido, IF( fecha_nacimiento = '0000-00-00', NULL, fecha_nacimiento) AS fecha_nacimiento FROM personas
NULL lo puedes reemplazar por el valor que más te acomode/sirva, así nuestra aplicación siempre recibirá un valor de fecha válido en vez del despreciable ‘0000-00-00′.
- Servicios:
- Comentarios RSS
- Menear!
- Del.icio.us

2/12/2008 at 11:22 am
Excelente, yo lo manejaba mas o menos igual pero de lado de codigo, pero ahora lo puedo hacer directamente desde SQL. Gracias.
2/21/2008 at 6:34 am
Excelente ejemplo. Sin embargo, si tienes un website que genera muchas consultas simultáneas, es mejor validar a nivel del script (PHP, Perl, etc.) y simplificar al máximo las consultas sql complejas.
