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’.