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:

  1. SELECT DATE(NOW()) AS fecha, CURDATE() AS fecha2

Obtener hora:

  1. 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:

  1. SELECT EXTRACT(DAY FROM fecha) AS dia
  2. FROM noticias
  1. SELECT EXTRACT(MONTH FROM fecha) AS mes
  2. FROM noticias
  1. SELECT EXTRACT(YEAR FROM fecha) AS año,
  2. EXTRACT(MONTH FROM fecha) AS mes
  3. FROM noticias

Obtener hora, minuto, segundo y microsegundo de una hora:

  1. SELECT EXTRACT(HOUR from fecha) AS hora
  2. EXTRACT(MINUTE from fecha) AS minuto
  3. FROM noticias
  1. SELECT EXTRACT(SECOND from fecha) AS segundo
  2. EXTRACT(MICROSECOND from fecha) AS microsegundo
  3. 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:

  1. DATE_ADD([campo date], INTERVAL [valor] [unidad])
  1. DATE_SUB([campo date], INTERVAL [valor] [unidad])

Unidades:

  • MICROSECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR
  • SECOND_MICROSECOND
  • MINUTE_MICROSECOND
  • MINUTE_SECOND
  • HOUR_MICROSECOND
  • HOUR_SECOND
  • HOUR_MINUTE
  • DAY_MICROSECOND
  • DAY_SECOND
  • DAY_MINUTE
  • DAY_HOUR
  • YEAR_MONTH


  1. SELECT DATE_ADD("2018-04-12", INTERVAL 10 DAY) AS fecha
  1. SELECT fecha DATE_ADD(fecha, INTERVAL 10 DAY)
  2. FROM noticias
  1. SELECT DATE_ADD("2018-04-12", INTERVAL 1 QUARTER) AS fecha


  1. SELECT DATE_ADD(fecha, INTERVAL "1-3" YEAR_MONTH) AS fecha
  2. 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.

  1. SELECT DATE_SUB(fecha, INTERVAL "1 3" DAY_HOUR) AS fecha
  2. FROM noticias;

 Se puede simplificar sustituyendo el DATE_ADD o DATE_SUB por un signo:

  1. SELECT [campo date] + INTERVAL [valor] [unidad]
  1. SELECT fecha - INTERVAL "1 5" YEAR_MONTH) as fecha
  2. FROM noticias

Obtener diferencia de días entre 2 fechas :

  1. SELECT DATEDIFF(now(),fecha) as tiempo
  2. FROM noticias

Formatear fecha:

  1. SELECT DATE_FORMAT(NOW(), "%d-%m-%Y %h:%m:%S %p")

Opciones:

  • %a  -  Día de semana abreviado (inglés)
  • %b  -  Nombre del mes abreviado (inglés)
  • %c   -  Mes numérico (0-12)
  • %d   -  Día del mes numérico (00-31)
  • %D  -  Día del mes con sufijo (inglés)
  • %e   -  Día del mes numérico (0-31)
  • %f    -  Microsegundos (000000-999999)
  • %h   -  Hora(01-12)
  • %H  -  Hora (00-23)
  • %i    -  Minutos numérico (00-59)
  • %I    -  Hora (01-12)
  • %j    -  Día del año(001-366)
  • %k   -  Hora (0-23)
  • %l   -  Hora(1-12)
  • %m -  Mes numérico (00-12)
  • %M -  Nombre del mes (inglés)
  • %p  -  AM o PM
  • %r   -  Tiempo 12 horas (AM-PM)
  • %s   -  Segundos (00-59)
  • %S   -  Segundos (00-59)
  • %T   -  Tiempo 24 horas 
  • %u  -  Semana (00-53) (lunes primer día de semana)
  • %U  -  Semana (00-53) (domingo primer día de semana)
  • %v   -  Semana (01-53) (lunes primer día de semana)
  • %V  -  Semana (01-53) (domingo primer día de semana)
  • %w  -  Día de la semana (0=Sunday-6=Saturday)
  • %W -  Nombre del día (inglés)
  • %x   -  Año, numérico con 4 dígitos (lunes primer día de semana)
  • %X   -  Año, numérico con 4 dígitos (domingo primer día de semana)
  • %y   -  Año, numérico con 2 dígitos
  • %Y   -  Año, numérico con 4 dígitos
  • %%  -  %


Comentarios: 0

Para poder comentar es necesario iniciar sesión



Este dominio utiliza cookies de terceros para crear estadísticas y publicidad personalizada. Si continúa navegando está aceptando su uso