Problema:
Vorresti aggiungere una certa quantità di tempo a un valore datetime in un database MySQL.
Esempio:
Il nostro database ha una tabella denominata flight_schedule
con i dati nelle colonne flight
, aircraft
e arrival_datetime
.
volo | aereo | data_arrivo |
---|---|---|
EK10 | L1201 | 2019-04-20 15:15:00 |
AY12 | K2001 | 31-03-2019 20:10:00 |
LA105 | F205 | 2019-08-03 11:15:00 |
LH30 | K256 | 2019-07-01 12:47:00 |
Per ogni volo, otteniamo il codice del volo, il codice dell'aeromobile e una nuova data e ora di arrivo. Per calcolare il new_arrival_datetime
, aggiungeremo 2 ore e 10 minuti all'ora corrente per ogni arrivo:ecco quanto sono stati ritardati questi voli.
Soluzione:
Useremo il ADDTIME()
funzione. Ecco la domanda che scriveresti:
SELECT flight, aircraft, ADDTIME(arrival_datetime, ‘2:10’) AS new_arrival_datetime FROM flight_schedule;
Ecco il risultato della query:
volo | aereo | new_arrival_datetime |
---|---|---|
EK10 | L1201 | 2019-04-20 17:25:00 |
AY12 | K2001 | 31-03-2019 22:20:00 |
LA105 | F205 | 2019-08-03 13:25:00 |
LH30 | K256 | 01-07-2019 14:57:00 |
Discussione:
Utilizzare la funzione ADDTIME() se si desidera selezionare una nuova data e ora aggiungendo una data ora a un valore data/ora/ora.
Questa funzione accetta due argomenti. Il primo argomento è la data/ora a cui stiamo aggiungendo l'ora; questa può essere un'espressione che restituisce un valore di ora/data/ora/data/ora o il nome di una colonna ora/data/ora/data/ora. Nel nostro esempio, utilizziamo arrival_datetime
colonna, che è della datetime tipo di dati.
Il secondo argomento è una stringa contenente la quantità di tempo da aggiungere al primo argomento (nel nostro esempio, '2:10', o 2 ore e 10 minuti).
Puoi anche aggiungere frazioni di secondi e persino giorni a un valore data/ora. La query seguente aggiunge 3 giorni, 1 ora, 1 minuto, 1 secondo e 111 secondi frazionari a una data e un'ora:
SELECT ADDTIME('2019-02-05 10:12:11', '3 1:1:1.111');
Restituisce:
2019-02-08 11:13:12.111000
ADDTIME() restituisce una stringa con la nuova ora. Nel nostro esempio, il nuovo orario di arrivo per il volo 'EK10' è "2019-04-20 17:25:00" - due ore e dieci minuti dopo la data e l'ora originale di
‘2019-04-20 15:15:00’.