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, arrival - departure AS date_difference, arrival - departure + 1 AS days 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 in PostgreSQL oder Oracle als Tage zu zählen, müssen Sie einfach ein Datum vom anderen subtrahieren, z. arrival - departure
.
Aber 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:arrival - departure + 1
.