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 , oder die Anzahl der Tage ab arrival bis Abreise inklusive.
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, DATEDIFF(day, departure, arrival) AS date_difference, DATEDIFF(day, departure, arrival) + 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 den Unterschied zwischen Datumsangaben zu finden, verwenden Sie DATEDIFF(datepart, startdate, enddate) Funktion. Der datepart argument definiert den Teil von date/datetime, in dem Sie den Unterschied ausdrücken möchten. Sein Wert kann year sein , quarter , month , day , minute usw. In diesem Beispiel möchten Sie die Differenz in Tagen ausdrücken, daher ist das erste Argument Tag. Die beiden anderen Argumente sind das Datum, ab dem Sie mit dem Zählen beginnen, und das Datum, an dem Sie mit dem Zählen aufhören – in diesem Fall departure und arrival .
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:DATEDIFF(day, departure, arrival) + 1 .