Problem:
Du vil gerne tilføje en vis mængde tid til en datetime-værdi i en MySQL-database.
Eksempel:
Vores database har en tabel ved navn flight_schedule
med data i kolonnerne flight
, aircraft
, og arrival_datetime
.
flyvning | fly | arrival_datetime |
---|---|---|
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 |
Lad os få flykoden, flykoden og en ny ankomstdato og et nyt tidspunkt for hver flyvning. For at beregne new_arrival_datetime
, tilføjer vi 2 timer og 10 minutter til det aktuelle tidspunkt for hver ankomst – det er hvor meget disse fly er blevet forsinket.
Løsning:
Vi bruger ADDTIME()
fungere. Her er den forespørgsel, du ville skrive:
SELECT flight, aircraft, ADDTIME(arrival_datetime, ‘2:10’) AS new_arrival_datetime FROM flight_schedule;
Her er resultatet af forespørgslen:
flyvning | fly | new_arrival_datetime |
---|---|---|
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 |
Diskussion:
Brug funktionen TILFØJ TID() hvis du vil vælge en ny dato og klokkeslæt ved at tilføje et givet klokkeslæt til en værdi for dato/tidsstempel/tidspunkt.
Denne funktion tager to argumenter. Det første argument er dato/klokkeslæt, som vi tilføjer tid til; dette kan være et udtryk, der returnerer en tid/datotid/tidsstempelværdi eller navnet på en tid/datotid/tidsstempelkolonne. I vores eksempel bruger vi arrival_datetime
kolonne, som er af datetime datatype.
Det andet argument er en streng, der indeholder mængden af tid, der skal føjes til det første argument (i vores eksempel '2:10' eller 2 timer og 10 minutter).
Du kan også tilføje brøkdele af sekunder og endda dage til en dato/tid-værdi. Forespørgslen nedenfor føjer 3 dage, 1 time, 1 minut, 1 sekund og 111 brøksekunder til en dato og et klokkeslæt:
SELECT ADDTIME('2019-02-05 10:12:11', '3 1:1:1.111');
Det returnerer:
2019-02-08 11:13:12.111000
ADDTIME() returnerer en streng med den nye tid. I vores eksempel er det nye ankomsttidspunkt for fly ‘EK10’ er "2019-04-20 17:25:00" - to timer og ti minutter efter den oprindelige dato
‘2019-04-20 15:15:00’.