SQL >> Base de Datos >  >> RDS >> Mysql

Cómo agregar tiempo a un valor de fecha y hora en MySQL

Problema:

Le gustaría agregar una cierta cantidad de tiempo a un valor de fecha y hora en una base de datos MySQL.

Ejemplo:

Nuestra base de datos tiene una tabla llamada flight_schedule con datos en las columnas flight , aircraft y arrival_datetime .

vuelo avión fecha_hora_de_llegada
EK10 L1201 2019-04-20 15:15:00
AY12 K2001 2019-03-31 20:10:00
LA105 F205 2019-08-03 11:15:00
LH30 K256 2019-07-01 12:47:00

Para cada vuelo, obtengamos el código de vuelo, el código de la aeronave y una nueva fecha y hora de llegada. Para calcular el new_arrival_datetime , agregaremos 2 horas y 10 minutos a la hora actual para cada llegada; ese es el retraso de estos vuelos.

Solución:

Usaremos el ADDTIME() función. Esta es la consulta que escribirías:

SELECT flight,
       aircraft,
       ADDTIME(arrival_datetime, ‘2:10’) 
         AS new_arrival_datetime
FROM flight_schedule;

Este es el resultado de la consulta:

vuelo avión nueva_fecha_de_llegada
EK10 L1201 2019-04-20 17:25:00
AY12 K2001 2019-03-31 22:20:00
LA105 F205 2019-08-03 13:25:00
LH30 K256 2019-07-01 14:57:00

Discusión:

Utilice la función ADDTIME() si desea seleccionar una nueva fecha y hora agregando una hora dada a un valor de fecha y hora/marca de tiempo/hora.

Esta función toma dos argumentos. El primer argumento es la fecha y hora/hora a la que estamos agregando tiempo; puede ser una expresión que devuelva un valor de hora/fechahora/marca de tiempo o el nombre de una columna de hora/fechahora/marca de tiempo. En nuestro ejemplo, usamos el arrival_datetime columna, que es de datetime tipo de datos.

El segundo argumento es una cadena que contiene la cantidad de tiempo que se agregará al primer argumento (en nuestro ejemplo, '2:10' o 2 horas y 10 minutos).

También puede agregar fracciones de segundo e incluso días a un valor de fecha y hora. La siguiente consulta agrega 3 días, 1 hora, 1 minuto, 1 segundo y 111 fracciones de segundo a una fecha y hora:

SELECT ADDTIME('2019-02-05 10:12:11', '3 1:1:1.111'); 

Devuelve:

2019-02-08 11:13:12.111000

ADDTIME() devuelve una cadena con la nueva hora. En nuestro ejemplo, la nueva hora de llegada del vuelo ‘EK10’ es '2019-04-20 17:25:00', dos horas y diez minutos después de la fecha y hora original de

‘2019-04-20 15:15:00’.