Problém:
K hodnotě datetime v databázi MySQL byste chtěli přidat určitý čas.
Příklad:
Naše databáze obsahuje tabulku s názvem flight_schedule
s údaji ve sloupcích flight
, aircraft
a arrival_datetime
.
let | letadlo | arrival_datetime |
---|---|---|
EK10 | L1201 | 20.04.2019 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 |
Pro každý let získáme kód letu, kód letadla a nové datum a čas příletu. Pro výpočet new_arrival_datetime
, přidáme 2 hodiny a 10 minut k aktuálnímu času každého příletu – o tolik byly tyto lety zpožděny.
Řešení:
Použijeme ADDTIME()
funkce. Zde je dotaz, který byste napsali:
SELECT flight, aircraft, ADDTIME(arrival_datetime, ‘2:10’) AS new_arrival_datetime FROM flight_schedule;
Zde je výsledek dotazu:
let | letadlo | new_arrival_datetime |
---|---|---|
EK10 | L1201 | 20.04.2019 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 |
Diskuse:
Funkci ADDTIME() použijte, pokud chcete vybrat nové datum a čas přidáním daného času k hodnotě datetime/timestamp/time.
Tato funkce má dva argumenty. První argument je datum/čas, ke kterému přidáváme čas; může to být výraz, který vrací hodnotu čas/datum/čas/časové razítko nebo název sloupce čas/datumčas/časové razítko. V našem příkladu používáme arrival_datetime
sloupec, který má datum a čas datový typ.
Druhý argument je řetězec obsahující čas, který se má přidat k prvnímu argumentu (v našem příkladu „2:10“ neboli 2 hodiny a 10 minut).
K hodnotě data a času můžete také přidat zlomky sekund a sudé dny. Dotaz níže přidá k datu a času 3 dny, 1 hodinu, 1 minutu, 1 sekundu a 111 zlomkových sekund:
SELECT ADDTIME('2019-02-05 10:12:11', '3 1:1:1.111');
Vrací:
2019-02-08 11:13:12.111000
ADDTIME() vrátí řetězec s novým časem. V našem příkladu nový čas příletu pro let ‚EK10‘ je ‘2019-04-20 17:25:00’ – dvě hodiny a deset minut po původním datu
‘2019-04-20 15:15:00’.