Problem:
Chcesz dodać określoną ilość czasu do wartości daty i godziny w bazie danych MySQL.
Przykład:
Nasza baza danych zawiera tabelę o nazwie flight_schedule
z danymi w kolumnach flight
, aircraft
i arrival_datetime
.
lot | samolot | 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 |
Dla każdego lotu uzyskajmy kod lotu, kod samolotu oraz nową datę i godzinę przylotu. Aby obliczyć new_arrival_datetime
, dodamy 2 godziny i 10 minut do aktualnego czasu dla każdego przylotu – tyle opóźniły się te loty.
Rozwiązanie:
Użyjemy ADDTIME()
funkcjonować. Oto zapytanie, które możesz napisać:
SELECT flight, aircraft, ADDTIME(arrival_datetime, ‘2:10’) AS new_arrival_datetime FROM flight_schedule;
Oto wynik zapytania:
lot | samolot | 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 |
Dyskusja:
Użyj funkcji ADDTIME(), jeśli chcesz wybrać nową datę/godzinę przez dodanie podanej godziny do wartości daty/daty/czasu/czasu.
Ta funkcja przyjmuje dwa argumenty. Pierwszym argumentem jest data/godzina, do której dodajemy czas; może to być wyrażenie zwracające wartość czasu/daty/godziny/znacznika czasu lub nazwę kolumny czasu/daty/godziny/znacznika czasu. W naszym przykładzie używamy arrival_datetime
kolumna, która zawiera data i godzina typ danych.
Drugi argument jest ciągiem zawierającym ilość czasu do dodania do pierwszego argumentu (w naszym przykładzie „2:10” lub 2 godziny i 10 minut).
Możesz także dodać ułamki sekund, a nawet dni do wartości daty/godziny. Poniższe zapytanie dodaje 3 dni, 1 godzinę, 1 minutę, 1 sekundę i 111 ułamków sekund do daty i godziny:
SELECT ADDTIME('2019-02-05 10:12:11', '3 1:1:1.111');
Zwraca:
2019-02-08 11:13:12.111000
ADDTIME() zwraca ciąg z nowym czasem. W naszym przykładzie nowy czas przylotu lotu „EK10” to ‘2019-04-20 17:25:00’ – dwie godziny i dziesięć minut po pierwotnej dacie
‘2019-04-20 15:15:00’.