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.
Por Freddie el 01 de Abril de 2010
Excelente aporte, Keith_NT.
Por bubudrc el 01 de Abril de 2010
Por Sisco el 01 de Abril de 2010
Por eldervaz el 01 de Abril de 2010
Por Keith_NT el 05 de Abril de 2010
Por Hernán el 06 de Abril de 2010
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 bubudrc el 16 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 y
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
Por cokocool el 21 de Junio de 2012
Por Garcia01 el 07 de Enero de 2013
Por Euromaniac el 15 de Enero de 2013
Por steven el 18 de Enero de 2013
Por Diego Luna el 20 de Enero de 2013
Por Eduardo Guerere el 25 de Enero de 2013
Por Alex el 28 de Febrero de 2013
CREATE FUNCTION `nombredia` (xfecha DATE) RETURNS VARCHAR (15) CHARSET utf8
BEGIN
DECLARE nomdia VARCHAR (15) ;
CASE
DAYNAME(xfecha)
WHEN 'Monday'
THEN SET nomdia = 'Lunes' ;
WHEN 'Tuesday'
THEN SET nomdia = 'Martes' ;
WHEN 'Wednesday'
THEN SET nomdia = 'Miercoles' ;
WHEN 'Thursday'
THEN SET nomdia = 'Jueves' ;
WHEN 'Friday'
THEN SET nomdia = 'Viernes' ;
WHEN 'Saturday'
THEN SET nomdia = 'Sabado' ;
WHEN 'Sunday'
THEN SET nomdia = 'Domingo' ;
END CASE ;
RETURN nomdia ;
Espero les sirva
Por kike el 10 de Marzo de 2013
quisiera saber como obtener la cantidad de horas de un intervalo de horas, valga le redundancia..
desde ya, gracias!
Por Alejandro9 el 15 de Marzo de 2013
Por tobis el 16 de Marzo de 2013
Por Edgar el 20 de Marzo de 2013
Por N Ccapa el 14 de Abril de 2013
Por maya el 12 de Junio de 2013
Por cindy caballero el 22 de Agosto de 2013
Por mary el 30 de Agosto de 2013
Por Ander el 30 de Septiembre de 2013
Por mila el 26 de Mayo de 2014
Por Jesueto el 10 de Julio de 2014
Yo tenía un problema, utilizaba NOW() creyendo que me traía la pura fecha, y por eso mis consultas no me mandaban lo que yo quería. CURDATE() fue la respuesta.
Gracias amigo!
Por eddy el 02 de Octubre de 2014
Por Ambar el 28 de Octubre de 2014
Por Vanesa el 29 de Octubre de 2014
Por felipe el 02 de Diciembre de 2014
Por Mike el 30 de Diciembre de 2014
Por venisker el 10 de Enero de 2015
me sale este formato January 02 2015
pero quiero que se muestre asi --> 02 de Enero del 2015
Por anis el 18 de Febrero de 2015
Por Armando Estrella el 20 de Marzo de 2015
Por Adriana el 07 de Mayo de 2015
Por Mark el 23 de Mayo de 2015
Por blaDDI el 25 de Mayo de 2015
Por Artmo el 16 de Junio de 2015
|Date_format(now())|
----------------------------
Date_format(now()+1day)
Date_format(now()+2day)
Date_format(now()+.day)
Date_format(now()+nday)
Por eduardo el 08 de Julio de 2015
Por Edmund el 26 de Agosto de 2015
Por amps el 14 de Septiembre de 2015
Por meloooo el 25 de Septiembre de 2015
si tengo registro en fecha de nacimiento en estos terminos
fechanac date -- la fecha al aser las inserciones lo realizo asi 1994-09-25
ahora la pregunta
siendo este año 2015 como podria realizar una consulta para conocer las personas que cumplen años en este dia (2015-09-25)
espero me solucionen esta gran duda
muchas gracias de ante mano
Por zeuskx el 25 de Septiembre de 2015
Por rigo el 05 de Agosto de 2016
-----------------------------------------------------------------------------------------------------
Esto es en visual basic 6.0
cn.Open
Set rs = New Recordset
rs.Open "select nombre,ap_paterno,ap_materno,nombre_tutor,grado,grupo, ciclo_escolar,dia,hora from alumnos where matricula = '" & Text1.Text & "'", cn, adOpenStatic
Text2.Text = rs!nombre
Text18.Text = rs!ap_paterno
Text19.Text = rs!ap_materno
Text3.Text = rs!nombre_tutor
Text4.Text = rs!grado
Text6.Text = rs!grupo
Text16.Text = rs!ciclo_escolar
Text5.Text = rs!dia
Text7.Text = rs!hora
Me.Caption = rs.Fields(0).Value
cn.Close
-----------------------------------------------------------------------------------------------------
y esto es mysql
dia TIMESTAMP,
hora TIMESTAMP,
insert into alumnos values("091","01","0001","002","10101259","Roberto","Garcia","Morales","2","A","0+","2003-06-21","GAMR030307HDFBCS02","2015-04-21","[email protected]","hombre","Martha Peralta Morales","AV.oriente totolnolco No. 32","2015-09-26","2014","mariscos","0000-00-00","00:00:00");
Por leo el 11 de Noviembre de 2016
Por Will el 13 de Noviembre de 2016
Por Will el 13 de Noviembre de 2016
//select TIMESTAMPDIFF(YEAR, fecha-menor, fecha-mayor) AS Años;//
select TIMESTAMPDIFF(YEAR, CURDATE(), CURDATE()) AS Años;
Por Harriroot el 24 de Noviembre de 2016
Por josss el 29 de Noviembre de 2017
Por dam906 el 01 de Septiembre de 2018