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
Mestinon For Sale Septilin No Prescription Buy Abana No Prescription Buy Online Avodart Buy Himcolin Online Hytrin For Sale Levitra No Prescription Buy Proscar No Prescription Buy Online Lopid Buy Zebeta Online Azulfidine For Sale Karela No Prescription Buy Clomid No Prescription Buy Online Loxitane Buy Actoplus Met Online Capoten For Sale Celebrex No Prescription Buy Retin-A No Prescription Buy Online Prednisone Buy Levitra Online Prednisone For Sale Tricor No Prescription Buy Tramadol No Prescription Buy Online Lamisil Buy Inderal Online

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>