MySql cuando almacena una fecha lo hace deacuerdo a la norma ISO 8601 esto es YYYY-mm-dd.

¿Por que MySql Almacena fecha en ese formato?
La explicación es muy amplia y no lo trataremos ahora, pero lo podemos resumir en los siguientes puntos:
– Evitar formatos ambiguos
– Tener un formato único y universal
– Poder ser organizados de más a menos significativo
– Estar en formato ordenable, incluso si tratáramos a las fechas como cadenas de texto, podríamos ordenarlas alfabéticamente.

Si ingresamos una fecha que no cumpla con ese formato, simplemente provocará un error, ya que no sera recocido como fecha válida.

¿Como podemos solucionar esto?
Mysql Contiene una función llamada GET_FORMAT con el cual podemos insertar fechas con distinto formato, solo le tenemos que indicar en que formato estamos recibiendo la fecha para que MySQL luego lo procese.

Los formatos que acepta GET_FORMAT son los siguientes

Llamada función Resultado
GET_FORMAT(DATE,’USA’) ‘%m.%d.%Y’
GET_FORMAT(DATE,’JIS’) ‘%Y-%m-%d’
GET_FORMAT(DATE,’ISO’) ‘%Y-%m-%d’
GET_FORMAT(DATE,’EUR’) ‘%d.%m.%Y’
GET_FORMAT(DATE,’INTERNAL’) ‘%Y%m%d’
GET_FORMAT(DATETIME,’USA’) ‘%Y-%m-%d %H.%i.%s’
GET_FORMAT(DATETIME,’JIS’) ‘%Y-%m-%d %H:%i:%s’
GET_FORMAT(DATETIME,’ISO’) ‘%Y-%m-%d %H:%i:%s’
GET_FORMAT(DATETIME,’EUR’) ‘%Y-%m-%d %H.%i.%s’
GET_FORMAT(DATETIME,’INTERNAL’) ‘%Y%m%d%H%i%s’
GET_FORMAT(TIME,’USA’) ‘%h:%i:%s %p’
GET_FORMAT(TIME,’JIS’) ‘%H:%i:%s’
GET_FORMAT(TIME,’ISO’) ‘%H:%i:%s’
GET_FORMAT(TIME,’EUR’) ‘%H.%i.%s’
GET_FORMAT(TIME,’INTERNAL’) ‘%H%i%s’

Para demostrar el uso de esta función voy a crear una tabla:

Supongamos que recibimos un fecha con el siguiente formato 15/01/2005 (dd/mm/YYYY). . Esto lo insertaremos de la siguiente manera.

Explicaré lo que hace la sentencia
Convertimos la cadena de texto a un formato fecha con STR_TO_DATE.
Usamos REPLACE para reemplazamos las barras por el punto (.), según nuestra tabla de formatos.
Con GET_FORMAT(date,’EUR’) le decimos al mysql que la fecha que vamos ingresar esta en formato europeo

Probemos con otra fecha, insertaremos una fecha con el siguiente formato 10.31.2003 (mm.dd.YYYY)

Verificamos nuestros datos insertados, y vemos que esta en el formato estándar.

Espero que les sea de mucha utilidad y les evite muchos dolores de cabeza.

Hasta la próxima!

Benjamín

Soy Benjamín Gonzales B, desarrollador de Software con más de 10 años de experiencia, me apasiona todo lo relacionado a las nuevas tecnologías y el software libre. Me gusta investigar , leer y aprender cada día algo nuevo. Desarrollo en LINUX,PHP, JAVA, C#, Javascript, MySql, SqlServer, entre otros y actualmente ando experimentando con lenguajes funcionales como: Erlang, Clojure y Scala. Y otros no funcionales como GO.

Latest posts by Benjamín (see all)

Insertando Fechas con Diferente Formato en MySQL
Compartir
Tweet about this on TwitterShare on Facebook1Share on Google+0Share on LinkedIn0Email this to someonePin on Pinterest0Share on Tumblr0Share on Reddit0Share on StumbleUpon0
Etiquetado en:                    

2 thoughts on “Insertando Fechas con Diferente Formato en MySQL

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *