Problem:
Sie haben zwei Spalten des Datumstyps und möchten die Differenz zwischen ihnen berechnen.
Beispiel:
Im travel
Tabelle gibt es drei Spalten:id
, departure
, und arrival
. Sie möchten die Differenz zwischen arrival
berechnen und departure
und die Anzahl der Tage von der Ankunft bis zur Abreise einschließlich .
Die travel
Tabelle sieht so aus:
id | Abfahrt | Ankunft |
---|---|---|
1 | 25.03.2018 | 2018-04-05 |
2 | 2019-09-12 | 2019-09-23 |
3 | 2018-07-14 | 2018-07-14 |
4 | 05.01.2018 | 08.01.2018 |
Lösung:
SELECT id, departure, arrival, JULIANDAY(arrival) - JULIANDAY(departure) AS date_difference, JULIANDAY(arrival) - JULIANDAY(departure) + 1 AS days_inclusive FROM travel;
Das Ergebnis ist:
id | Abfahrt | Ankunft | date_difference | Tage |
---|---|---|---|---|
1 | 25.03.2018 | 2018-04-05 | 11 | 12 |
2 | 2019-09-12 | 2019-09-23 | 11 | 12 |
3 | 2018-07-14 | 2018-07-14 | 0 | 1 |
4 | 05.01.2018 | 08.01.2018 | 3 | 4 |
Diskussion:
Um die Differenz zwischen Datumsangaben zu zählen, verwenden Sie JULIANDAY()
Funktion, die die Anzahl der Tage seit dem Mittag in Greenwich am 24. November 4714 v. Sie verwenden den JULIANDAY(date)
für jeden der beiden Termine; subtrahieren Sie sie einfach mit einem Minuszeichen (-):
JULIANDAY(arrival) - JULIANDAY(departure)
In den meisten Fällen möchten Sie wirklich die Anzahl der Tage vom ersten Date bis zum zweiten Date einschließlich . Dann müssen Sie 1 Tag zu der Differenz in Tagen hinzufügen:
JULIANDAY(arrival) - JULIANDAY(departure) + 1.