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, tips

Indudablemente 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′.

2 comentarios para “La fecha 0000-00-00 de MySql”

  1. GravatarAbraham Estrada Dice:

    Excelente, yo lo manejaba mas o menos igual pero de lado de codigo, pero ahora lo puedo hacer directamente desde SQL. Gracias.

  2. Gravatardigdug Dice:

    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.
    ;-)

Deja un comentario

XHTML: puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>