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

DATEDIFF() Beispiele – MySQL

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 |
+------------+------------+-------+