sql >> Database >  >> RDS >> Mysql

Tijd toevoegen aan een Datetime-waarde in MySQL

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

  1. Hoe dynamische SQL in MySQL Stored Procedure te hebben?

  2. Controleer overlap van datumbereiken in MySQL

  3. Valutateken £, $ toevoegen aan bepaalde velden ORACLE

  4. Oracle JDeveloper-fragmenten gebruiken met MySQL