In MySQL können Sie den DATEDIFF()
verwenden Funktion, um die Differenz zwischen zwei Daten zu finden. Es funktioniert so, dass Sie zwei Argumente (eines für jedes Datum) und DATEDIFF()
angeben gibt die Anzahl der Tage zwischen den beiden Daten zurück.
Beispiele unten.
Syntax
Hier ist zunächst die Syntax:
DATEDIFF(expr1,expr2)
Wobei expr1
das erste Datum ist und expr2
ist das zweite Datum.
Beispiel 1 – Grundlegende Verwendung
Hier ist ein Beispiel zur Veranschaulichung.
SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
Ergebnis:
+--------+ | Result | +--------+ | 29 | +--------+
In diesem Beispiel liegt das erste Datum nach dem zweiten Datum. In diesem Fall erhalten wir einen positiven Rückgabewert.
Beispiel 2 – Vergleich mit einem früheren Datum
Das erste Datum muss nicht später als das zweite Datum sein. Sie können ein früheres Datum für das erste Argument verwenden und es wird einen negativen Wert zurückgeben. Wenn wir diese beiden Argumente vertauschen, erhalten wir Folgendes:
SELECT DATEDIFF('2020-10-01', '2020-10-30') AS 'Result';
Ergebnis:
+--------+ | Result | +--------+ | -29 | +--------+
Beispiel 3 – Datetime-Werte
Bei Verwendung mit datetime Werte, wird nur der Datumsteil verwendet, um die Daten zu vergleichen. Beispiel:
SELECT DATEDIFF('2020-10-30 23:59:59', '2020-10-01') AS 'Result 1', DATEDIFF('2020-10-01 23:59:59', '2020-10-30') AS 'Result 2';
Ergebnis:
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | 29 | -29 | +----------+----------+
Beispiel 4 – Datenbankabfrage
Hier ist ein Beispiel für die Verwendung von DATEDIFF()
in einer Datenbankabfrage. In diesem Beispiel vergleiche ich das payment_date
Spalte mit dem heutigen Datum (unter Verwendung des CURDATE()
Funktion, um das heutige Datum zurückzugeben):
USE sakila; SELECT DATE(payment_date) AS 'Date/Time', CURDATE(), DATEDIFF(payment_date, CURDATE()) AS 'Date' FROM payment WHERE payment_id = 1;
Ergebnis:
+------------+------------+-------+ | Date/Time | CURDATE() | Date | +------------+------------+-------+ | 2005-05-25 | 2018-06-25 | -4779 | +------------+------------+-------+