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

Excelente aporte, Keith_NT.
Por ikkaro2005 el 28 de Junio de 2010
Por Preciosa el 17 de Agosto de 2010
Por kamikaze el 10 de Septiembre de 2010
Por virus2564000 el 01 de Noviembre de 2010
me fue de gran ayuda
Por MarceloXL el 23 de Noviembre de 2010
Eres muy amable,
Por Zeox el 01 de Marzo de 2011
Por ZeroCool el 06 de Marzo de 2011
Por josh el 11 de Marzo de 2011
Por Felicidades y gracia el 21 de Marzo de 2011
Por gonto el 23 de Marzo de 2011
www.gonto.es
Por arezong el 17 de Abril de 2011
Saludos
Por Benjamin el 26 de Abril de 2011
muchas gracias, me ha servido mucho
Por Laucha! el 29 de Abril de 2011
Por Dpardoata el 18 de Mayo de 2011
Por Chrystian el 24 de Mayo de 2011
Por JOTIK el 29 de Mayo de 2011
Por Alchemist el 31 de Mayo de 2011
Por alvaro el 09 de Junio de 2011
Por mike steve el 28 de Junio de 2011
Por davan el 01 de Julio de 2011
como hago para que se muestre el resultado en español.
gracias
Por Javier el 07 de Julio de 2011
Por Lucas el 19 de Julio de 2011
Por maseo el 28 de Julio de 2011
muchas gracias.
Por hendaviher el 08 de Agosto de 2011
Por VS el 05 de Septiembre de 2011
Por Jonathan Senesi el 16 de Septiembre de 2011
Por L el 24 de Octubre de 2011
Por tugeder el 30 de Octubre de 2011
gracias
Por CCAC el 26 de Noviembre de 2011
Por JPCMORE el 28 de Noviembre de 2011
Por Edgar Barrera el 08 de Diciembre de 2011
TE RIFASTE CAÑON!!! ojalá todos los post fueran tan claros como este!!!
Saludos.
Por RobertSteve- el 09 de Diciembre de 2011
éxitos...
Por aw412161 el 03 de Enero de 2012
Por marlon martos el 20 de Enero de 2012
h.fecha,h.horaFin: datos de BD donde h representa una tabla
DATE_FORMAT(h.fecha, '%d/%m')
-imprime-(/03/0
TIME_FORMAT (h.horaFin, '%H:%i ')
-imprime- 09:00 ó 09:45
*/
select distinct DATE_FORMAT(h.fecha, '%d/%m') as fecha,
TIME_FORMAT(h.horaInicio, '%H:%i ') as horaInicio,
TIME_FORMAT(h.horaFin, '%H:%i ') as horaFin,k.kminicial,k.kmfinal
from horas h inner join kilometrajes k on k.horaInicio = h.horaInicio and k.fecha = h.fecha and h.idvehiculo = k.idvehiculo
where h.idmatricula =1570 and h.idvehiculo= 25
Por jhon velasco el 28 de Enero de 2012