sql >> Databasteknik >  >> RDS >> Mysql

Hur man lägger till tid till ett Datetime-värde i MySQL

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

  1. Java JDBC ignorerar setFetchSize?

  2. java - passerar array i oracle lagrad procedur

  3. SQL FINNS Operatör för nybörjare

  4. xampp MySQL startar inte