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(arrival, departure) AS date_difference, DATEDIFF(arrival, departure) + 1 AS days_inclusive FROM travel;
Das Ergebnis ist:
id | Abfahrt | Ankunft | date_difference | days_inclusive |
---|---|---|---|---|
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 MySQL zu zählen, verwenden Sie DATEDIFF(enddate, startdate)
Funktion. Der Unterschied zwischen startdate
und enddate
wird in Tagen ausgedrückt. In diesem Fall das enddate
ist arrival
und das startdate
ist departure
.
In den meisten Fällen möchten Sie jedoch die Anzahl der Tage vom ersten Date bis zum zweiten Date einschließlich . Sie müssen 1 Tag zur Differenz hinzufügen:DATEDIFF(arrival, departure) + 1
.