Comunidad de diseño web y desarrollo en internet online

Fechas con MySQL

Sé un experto en esta base de datos con el Curso de MySQL de Platzi.

El manejo de fechas en MySQL es extenso así que solo haré una introducción a las funciones de fechas. Para ejecutar las siguientes querys yo recomiendo usar "mysql gui tools".

Obtener la fecha y hora en MySQL

Código :

select now();   #   ejemplo:  '2010-01-12 10:50:43'

Obtener solo día mes y año en MySQL

Código :

select CURDATE();  # ejemplo: '2010-01-12'  #sin hora

Obtener hora actual en MySQL

Código :

select curTime(); #Selecciona la hora

Obtener día, mes, año, u hora de una fecha en MySQL


El formato de la fecha debe ser YYYY-MM-DD HH:MM:SS, aunque para obtener el año, mes o día solo es necesario YYYY-MM-DD

Código :

select YEAR(NOW());  #Selecciona el año
select MONTH (NOW()) as mes;  #Selecciona el mes
select DAY(NOW()) as dia; #Selecciona el día 
select TIME(NOW()) as hora;  #Selecciona la hora
Select LAST_DAY(NOW()); # Selecciona el ultimo dia del mes

También existe MICROSECOND, SECOND, MINUTE, HOUR, MONTHNAME, etc.

Dar formato a una fecha en MySQL


Para esto usamos Date_format, DATE_FORMAT(fecha,formato); ejemplo:

Código :

select Date_format(now(),'%Y/%M/%d'); # '2010/January/12'
select Date_format(now(),'%Y-%M-%d %h:%i:%s %p'); #'2010-January-12 12:34:29 AM'
select Date_format(now(),'%W %d %M %Y'); # 'Tuesday 12 January 2010'
select Date_format(now(),'El año actual es %Y'); # 'El año actual es 2010'

Estos son algunos de los especificadores que tenemos disponibles para dar formato a una fecha, la lista completa pueden verla en los manuales de MySql:

Código :

- %d #Día del mes numérico (00...31)
- %H #Hora (00...23)
- %h #Hora (01...12)
- %i #Minutos, numérico (00...59)
- %M #Nombre mes (January...December)
- %m #Mes, numérico (00...12)
- %p #AM o PM
- %W #Nombre día semana (Sunday...Saturday)
- %Y #Año, numérico, cuatro dígitos
- %y #Año, numérico (dos dígitos)
- %s #Segundos (00...59)


Sumar o restar días a una fecha con DATE_ADD o DATE_SUB en MySQL


DATE_ADD(fecha,INTERVAL valor tipo), DATE_SUB(fecha,INTERVAL valor tipo)

Sumar tiempo en MySQL

Código :

select DATE_ADD(NOW(),INTERVAL 20 DAY); # Agrega 20 días a la fecha actual
select DATE_ADD(NOW(),INTERVAL 30 MINUTE); # Agrega 30 minutos a la fecha actual
select DATE_ADD(NOW(),INTERVAL 50 YEAR); #Agrega 50 años a la fecha actual
select DATE_ADD(NOW(),INTERVAL '10-5' YEAR_MONTH); #Agrega 10 años 5 meses a la fecha actual


Restar tiempo en MySQL

Código :

select DATE_SUB(NOW(),INTERVAL 8 YEAR); #Resta 8 años a la fecha actual 
select DATE_SUB(NOW(),INTERVAL 24 HOUR); #Resta 24 horas a la fecha actual
select DATE_SUB(NOW(),INTERVAL '7-2' YEAR_MONTH); #Resta 7 años dos meses a la fecha actual

Estos son algunos de los argumentos que podemos usar, para una lista completa consulten los manuales de MySql

Código :

SECOND #Segundos
MINUTE #Minutos
HOUR #Horas
DAY #Días
MONTH #Meses
YEAR #Años
YEAR_MONTH #'Años-meses'
DAY_HOUR #'Días Horas'


Restar dos fechas


DATEDIFF(fecha_1,fecha_2) devuelve el número de días entre la fecha fecha_1 y la fecha_2

Código :

SELECT DATEDIFF(NOW(),'2002-11-02'); #cuantos días han pasado
SELECT DATEDIFF(NOW(),'2010-03-20'); #Cuantos días faltan


Espero les sea util :)

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate