Problem:
Masz dwie kolumny typu daty i chcesz obliczyć różnicę między nimi.
Przykład:
W travel
tabeli, są trzy kolumny:id
, departure
i arrival
. Chcesz obliczyć różnicę między arrival
i departure
i liczba dni od przyjazdu do wyjazdu włącznie .
travel
tabela wygląda tak:
id | wyjazd | przybycie |
---|---|---|
1 | 2018-03-25 | 2018-04-05 |
2 | 2019-09-12 | 23-09-2019 |
3 | 2018-07-14 | 2018-07-14 |
4 | 2018-01-05 | 2018-01-08 |
Rozwiązanie:
SELECT id, departure, arrival, JULIANDAY(arrival) - JULIANDAY(departure) AS date_difference, JULIANDAY(arrival) - JULIANDAY(departure) + 1 AS days_inclusive FROM travel;
Wynik:
id | wyjazd | przybycie | date_difference | dni |
---|---|---|---|---|
1 | 2018-03-25 | 2018-04-05 | 11 | 12 |
2 | 2019-09-12 | 23-09-2019 | 11 | 12 |
3 | 2018-07-14 | 2018-07-14 | 0 | 1 |
4 | 2018-01-05 | 2018-01-08 | 3 | 4 |
Dyskusja:
Aby policzyć różnicę między datami, użyj JULIANDAY()
funkcja, która zlicza liczbę dni od południa w Greenwich 24 listopada 4714 r. p.n.e. Używasz JULIANDAY(date)
dla każdej z dwóch dat; po prostu odejmij je za pomocą znaku minus (-):
JULIANDAY(arrival) - JULIANDAY(departure)
W większości przypadków to, czego naprawdę potrzebujesz, to liczba dni od pierwszej do drugiej daty włącznie . Następnie należy dodać 1 dzień do różnicy w dniach:
JULIANDAY(arrival) - JULIANDAY(departure) + 1.