Fechas en MySQL
Manejar fecha y hora en MySQL
MySQL dispone de funciones para obtener la fecha y hora actuales y extraer una de las secciones de dicha fecha y hora.
La función NOW() de MySQL permite obtener la hora y fecha actual en formato de cadena. Para obtener solamente la fecha o solamente la hora existen las funciones CURDATE() y CURTIME(). Por otro lado el método DATE() y el método TIME() permiten extraer la fecha y la hora respectivamente de una cadena en formato de fecha, por tanto, si en lugar de una cadena como parámetro se añade la función NOW() el resultado obtenido es el mismo que CURDATE() Y CURTIME(), es decir la fecha actual y la hora actual.
Obtener fecha:
SELECT DATE(NOW()) AS fecha, CURDATE() AS fecha2
Obtener hora:
SELECT TIME(NOW()) hora, CURTIME() hora2
Para extraer día, mes,año, hora, minuto o segundo de un campo de fecha y hora está disponible la función EXTRACT() que permite obtenerlo con la ayuda de un alias.
Obtener día, año o mes de una fecha:
SELECT EXTRACT(DAY FROM fecha) AS dia
FROM noticias
SELECT EXTRACT(MONTH FROM fecha) AS mes
FROM noticias
SELECT EXTRACT(YEAR FROM fecha) AS año,
EXTRACT(MONTH FROM fecha) AS mes
FROM noticias
Obtener hora, minuto, segundo y microsegundo de una hora:
SELECT EXTRACT(HOUR from fecha) AS hora
EXTRACT(MINUTE from fecha) AS minuto
FROM noticias
SELECT EXTRACT(SECOND from fecha) AS segundo
EXTRACT(MICROSECOND from fecha) AS microsegundo
FROM noticias
También es posible aumentar o disminuir un intervalo de tiempo a una fecha, para ello es necesario indicar la unidad con la que se va a manejar ese intervalo. A continuación se muestra la lista de las unidades disponibles por MySQL.
Aumentar o disminuir tiempo de fecha y hora:
DATE_ADD([campo date], INTERVAL [valor] [unidad])
DATE_SUB([campo date], INTERVAL [valor] [unidad])
Unidades:
SELECT DATE_ADD("2018-04-12", INTERVAL 10 DAY) AS fecha
SELECT fecha DATE_ADD(fecha, INTERVAL 10 DAY)
FROM noticias
SELECT DATE_ADD("2018-04-12", INTERVAL 1 QUARTER) AS fecha
SELECT DATE_ADD(fecha, INTERVAL "1-3" YEAR_MONTH) AS fecha
FROM noticias;
Nota: Recuerda no olvidar las comillas, ya que no da error pero realiza la operación de resta. En el ejemplo anterior (sin las comillas) obtendría -2 y restaría 2 meses a la fecha seleccionada.
SELECT DATE_SUB(fecha, INTERVAL "1 3" DAY_HOUR) AS fecha
FROM noticias;
Se puede simplificar sustituyendo el DATE_ADD o DATE_SUB por un signo:
SELECT [campo date] + INTERVAL [valor] [unidad]
SELECT fecha - INTERVAL "1 5" YEAR_MONTH) as fecha
FROM noticias
Obtener diferencia de días entre 2 fechas :
SELECT DATEDIFF(now(),fecha) as tiempo
FROM noticias
Formatear fecha:
SELECT DATE_FORMAT(NOW(), "%d-%m-%Y %h:%m:%S %p")
Opciones:
Para poder comentar es necesario iniciar sesión