Problem:
Du vill lägga till en viss tid till ett datetime-värde i en MySQL-databas.
Exempel:
Vår databas har en tabell som heter flight_schedule
med data i kolumnerna flight
, aircraft
och arrival_datetime
.
flyg | flygplan | 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 |
För varje flyg, låt oss få flygkoden, flygplanskoden och ett nytt ankomstdatum och tid. För att beräkna new_arrival_datetime
, lägger vi till 2 timmar och 10 minuter till den aktuella tiden för varje ankomst – det är hur mycket dessa flyg har blivit försenade.
Lösning:
Vi använder ADDTIME()
fungera. Här är frågan du skulle skriva:
SELECT flight, aircraft, ADDTIME(arrival_datetime, ‘2:10’) AS new_arrival_datetime FROM flight_schedule;
Här är resultatet av frågan:
flyg | flygplan | 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:
Använd funktionen ADDTIME() om du vill välja en ny datumtid genom att lägga till en given tid till ett värde för datum/tidsstämpel/tid.
Denna funktion tar två argument. Det första argumentet är datum/tid som vi lägger till tid till; detta kan vara ett uttryck som returnerar ett värde för tid/datumtid/tidsstämpel eller namnet på en kolumn tid/datumtid/tidsstämpel. I vårt exempel använder vi arrival_datetime
kolumnen, som är av datetime data typ.
Det andra argumentet är en sträng som innehåller hur lång tid det ska läggas till i det första argumentet (i vårt exempel "2:10", eller 2 timmar och 10 minuter).
Du kan också lägga till bråkdelar av sekunder och till och med dagar till ett datum/tid-värde. Frågan nedan lägger till 3 dagar, 1 timme, 1 minut, 1 sekund och 111 bråkdelar av sekunder till ett datum och en tid:
SELECT ADDTIME('2019-02-05 10:12:11', '3 1:1:1.111');
Den returnerar:
2019-02-08 11:13:12.111000
ADDTIME() returnerar en sträng med den nya tiden. I vårt exempel, den nya ankomsttiden för flyg ‘EK10’ är "2019-04-20 17:25:00" – två timmar och tio minuter efter dess ursprungliga datum,
‘2019-04-20 15:15:00’.