Problem:
Sie möchten die Differenz in Tagen zwischen zwei Daten in einer MySQL-Datenbank erhalten.
Beispiel:
Unsere Datenbank hat eine Tabelle namens food
mit Daten in den Spalten id
, name
, purchase_date
und expiration_date
.
id | Name | Kaufdatum | Ablaufdatum |
---|---|---|---|
1 | Brot | 2019-07-20 | 2019-08-22 |
2 | Butter | 2018-07-30 | 2019-08-10 |
3 | Milch | 2019-01-12 | 2019-01-13 |
4 | Joghurt | 25.02.2019 | 2019-02-24 |
Lassen Sie uns für jedes Lebensmittelprodukt den Namen des Produkts und die Anzahl der Tage zwischen seinem Ablauf- und Kaufdatum abrufen.
Lösung:
Wir verwenden DATEDIFF()
Funktion. Hier ist die Abfrage, die Sie schreiben würden:
SELECT name, DATEDIFF(expiration_date, purchase_date) AS days FROM food;
Hier ist das Ergebnis der Abfrage:
name | Tage |
---|---|
Brot | 33 |
Butter | 376 |
Milch | 1 |
Joghurt | -1 |
Diskussion:
Verwenden Sie DATEDIFF()
Funktion zum Abrufen der Anzahl der Tage zwischen zwei Daten in einer MySQL-Datenbank. Diese Funktion akzeptiert zwei Argumente:
- Das Enddatum. (In unserem Beispiel ist es das
expiration_date
Spalte.) - Das Startdatum. (In unserem Beispiel ist es das
purchase_date
Spalte.)
Diese Argumente können date/datetime-Werte, Ausdrücke, die date/datetime-Werte zurückgeben, oder Spalten vom Datentyp datetime oder date sein.
Diese Funktion subtrahiert das Startdatum vom Enddatum und gibt die Anzahl der Tage als Ganzzahl zurück. In unserem Beispiel Butter wurde am „30.07.2018“ gekauft, aber das Ablaufdatum war „10.08.2019“; Nach dem Kauf konnte es während 376 Tagen gegessen werden. Beachten Sie, dass Joghurt als veraltetes Produkt gekauft wurde:Die Differenz in Tagen beträgt -1 und das Kaufdatum liegt nach dem Ablaufdatum.