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

So finden Sie die Anzahl der Tage zwischen zwei Daten in MySQL

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:

  1. Das Enddatum. (In unserem Beispiel ist es das expiration_date Spalte.)
  2. 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.