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 .