Probleem:
U wilt een bepaalde hoeveelheid tijd toevoegen aan een datetime-waarde in een MySQL-database.
Voorbeeld:
Onze database heeft een tabel met de naam flight_schedule
met gegevens in de kolommen flight
, aircraft
, en arrival_datetime
.
vlucht | vliegtuig | arrival_datetime |
---|---|---|
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 |
Laten we voor elke vlucht de vluchtcode, vliegtuigcode en een nieuwe aankomstdatum en -tijd krijgen. Om de new_arrival_datetime
te berekenen , voegen we 2 uur en 10 minuten toe aan de huidige tijd voor elke aankomst - dat is hoeveel deze vluchten zijn vertraagd.
Oplossing:
We gebruiken de ADDTIME()
functie. Dit is de vraag die je zou schrijven:
SELECT flight, aircraft, ADDTIME(arrival_datetime, ‘2:10’) AS new_arrival_datetime FROM flight_schedule;
Dit is het resultaat van de zoekopdracht:
vlucht | vliegtuig | 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 |
Discussie:
Gebruik de functie ADDTIME() als u een nieuwe datetime wilt selecteren door een bepaalde tijd toe te voegen aan een datetime/timestamp/time-waarde.
Deze functie heeft twee argumenten. Het eerste argument is de datetime/time waaraan we tijd toevoegen; dit kan een expressie zijn die een tijd/datumtijd/tijdstempelwaarde retourneert of de naam van een tijd/datumtijd/tijdstempelkolom. In ons voorbeeld gebruiken we de arrival_datetime
kolom, die van de datetime . is data type.
Het tweede argument is een tekenreeks die de hoeveelheid tijd bevat die aan het eerste argument moet worden toegevoegd (in ons voorbeeld '2:10' of 2 uur en 10 minuten).
U kunt ook fractionele seconden en zelfs dagen toevoegen aan een datum/tijd-waarde. De onderstaande zoekopdracht voegt 3 dagen, 1 uur, 1 minuut, 1 seconde en 111 fractionele seconden toe aan een datum en tijd:
SELECT ADDTIME('2019-02-05 10:12:11', '3 1:1:1.111');
Het keert terug:
2019-02-08 11:13:12.111000
ADDTIME() retourneert een string met de nieuwe tijd. In ons voorbeeld is de nieuwe aankomsttijd voor vlucht 'EK10' is ‘2019-04-20 17:25:00’ – twee uur en tien minuten na de oorspronkelijke datumtijd van
‘2019-04-20 15:15:00’.