MySQL – Un tipo de datos para almacenar fechas

Objetivo: presentar el tipo de datos DATE para la introducción de fechas en MySQL.

En ocasiones necesitarás almacenar fechas en tus tablas. La fecha de nacimiento de tus contactos, el vencimiento de una tarea, el día en que adquiriste un determinado libro de tu biblioteca, son algunos ejemplos de usos típicos.

MySQL tiene unos cuantos tipos para manejar fechas y horas. Hoy voy a mostrarte uno especializado en las primeras (es decir, sin incluir información horaria): el tipo DATE.

A la hora de trabajar con fechas debes tener en cuenta el formato que MySQL maneja, tanto para la introducción como para la visualización de datos.

Se indica primero el año, seguido del mes y terminando por el día, como en el siguiente ejemplo:

'2012-10-25'  -->  25 de octubre de 2012

Quédate con la copla: 'AAAA-MM-DD'. Si introduces una fecha errónea, MySQL se la tragará, pero la guardará como '0000-00-00'.

Cuando digo fecha errónea no me refiero únicamente a que cruces los campos. Fíjate en esto:

'2012-02-29'

es perfectamente válido, pues este año es bisiesto. Pero lo siguiente es erróneo,

'2011-02-29'

y MySQL lo almacenaría en la tabla como '0000-00-00'.

Veremos más adelante que podemos configurar MySQL para que no sea tan estricto a la hora de comprobar fechas. Pero no olvides que, por defecto, no te pasará ni una.

Observa también que las fechas las introducimos entre comillas, al igual que hacemos con los datos de tipo VARCHAR (no importa si son simples o dobles). Si se te olvidan, obtendrás un 0000-00-00; advertido quedas.

MySQL te permite cierta flexibilidad a la hora de introducir fechas:

'2012-4-5' es equivalente a '2012-04-05'.

Y para el año podemos registrar tan sólo las dos últimas cifras:

'12-10-5' es equivalente a '2012-10-5'.

Pero claro, esto presenta un problema: ¿cómo sé, en el ejemplo anterior, si me estoy refiendo a 2012 en vez de 1912?

MySQL sigue el siguiente protocolo a la hora de traducir fechas con sólo dos cifras en el año:

Si el año está comprendido entre 00 y 69, ambos incluidos, lo precede con un 20.

En caso contrario, es decir, entre 70 y 99, es precedido por 19.

MySQL también permite flexibilidad a la hora de elegir el separador entre los campos. Puedes usar otros signos de puntuación, aparte del guión. Por ejemplo, las siguientes fechas son equivalentes:

'2012-7-31'
'2012/7/31'
'2012#7#31'
'2012:7:31'

Para finalizar, vamos a practicar creando una tabla, denominada contactos, en la que registraremos el nombre, apellido y la fecha de nacimiento de nuestros conocidos:

mysql> CREATE TABLE contactos
    -> (
    -> nombre VARCHAR(20),
    -> apellidos VARCHAR(30),
    -> f_nacimiento DATE
    -> );
Query OK, 0 rows affected (0.38 sec)

Comprobemos su estructura:

mysql> DESC contactos;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| nombre       | varchar(20) | YES  |     | NULL    |       |
| apellidos    | varchar(30) | YES  |     | NULL    |       |
| f_nacimiento | date        | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

Y eso es todo, en 'Sevilla' a '2012-06-07'.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2012/06/mysql-un-tipo-de-datos-para-almacenar-fechas/


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


¡Accede al índice con todos los artículos sobre MySQL!

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies