Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So berechnen Sie die Differenz zwischen zwei Daten in MySQL

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 .