Problém:
Máte dva sloupce typu datum a chcete vypočítat rozdíl mezi nimi.
Příklad:
V travel
tabulka má tři sloupce:id
, departure
a arrival
. Chcete vypočítat rozdíl mezi arrival
a departure
a počet dní od příjezdu do odjezdu včetně .
travel
tabulka vypadá takto:
id | odjezd | příjezd |
---|---|---|
1 | 25. 3. 2018 | 2018-04-05 |
2 | 2019-09-12 | 23. 9. 2019 |
3 | 2018-07-14 | 2018-07-14 |
4 | 2018-01-05 | 2018-01-08 |
Řešení:
SELECT id, departure, arrival, JULIANDAY(arrival) - JULIANDAY(departure) AS date_difference, JULIANDAY(arrival) - JULIANDAY(departure) + 1 AS days_inclusive FROM travel;
Výsledek je:
id | odjezd | příjezd | rozdíl data | dny |
---|---|---|---|---|
1 | 25. 3. 2018 | 2018-04-05 | 11 | 12 |
2 | 2019-09-12 | 23. 9. 2019 | 11 | 12 |
3 | 2018-07-14 | 2018-07-14 | 0 | 1 |
4 | 2018-01-05 | 2018-01-08 | 3 | 4 |
Diskuse:
Chcete-li spočítat rozdíl mezi daty, použijte JULIANDAY()
funkce, která počítá počet dní od poledne v Greenwichi 24. listopadu 4714 př. Kr. Používáte JULIANDAY(date)
pro každé ze dvou dat; jednoduše je odečtěte pomocí znaménka minus (-):
JULIANDAY(arrival) - JULIANDAY(departure)
Ve většině případů skutečně chcete počet dní od prvního do druhého rande včetně . Potom je třeba k rozdílu ve dnech přidat 1 den:
JULIANDAY(arrival) - JULIANDAY(departure) + 1.