sql >> Database >  >> RDS >> Mysql

DATEDIFF() Voorbeelden – MySQL

In MySQL kunt u de DATEDIFF() . gebruiken functie om het verschil tussen twee datums te vinden. De manier waarop het werkt, is dat je twee argumenten geeft (één voor elke datum), en DATEDIFF() geeft het aantal dagen tussen de twee datums terug.

Voorbeelden hieronder.

Syntaxis

Ten eerste, hier is de syntaxis:

DATEDIFF(expr1,expr2)

Waar expr1 is de eerste date, en expr2 is de tweede date.

Voorbeeld 1 – Basisgebruik

Hier is een voorbeeld om te demonstreren.

SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';

Resultaat:

+--------+
| Result |
+--------+
|     29 |
+--------+

In dit voorbeeld is de eerste datum later dan de tweede datum. In dit geval krijgen we een positieve retourwaarde.

Voorbeeld 2 – Vergelijking met een eerdere datum

De eerste date hoeft niet later te zijn dan de tweede date. U kunt een eerdere datum gebruiken voor het eerste argument en het zal een negatieve waarde retourneren. Als we die twee argumenten omwisselen, krijgen we het volgende:

SELECT DATEDIFF('2020-10-01', '2020-10-30') AS 'Result';

Resultaat:

+--------+
| Result |
+--------+
|    -29 |
+--------+

Voorbeeld 3 – Datum/tijd-waarden

Bij gebruik met datetime waarden, wordt alleen het datumgedeelte gebruikt om de datums te vergelijken. Voorbeeld:

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';

Resultaat:

+----------+----------+
| Result 1 | Result 2 |
+----------+----------+
|       29 |      -29 |
+----------+----------+

Voorbeeld 4 – Databasequery

Hier is een voorbeeld van het gebruik van DATEDIFF() in een databasequery. In dit voorbeeld vergelijk ik de payment_date kolom met de datum van vandaag (met behulp van de CURDATE() functie om de datum van vandaag terug te geven):

USE sakila;
SELECT
  DATE(payment_date) AS 'Date/Time',
  CURDATE(),
  DATEDIFF(payment_date, CURDATE()) AS 'Date'
FROM payment
WHERE payment_id = 1;

Resultaat:

+------------+------------+-------+
| Date/Time  | CURDATE()  | Date  |
+------------+------------+-------+
| 2005-05-25 | 2018-06-25 | -4779 |
+------------+------------+-------+


  1. Multi-cloudimplementatie voor MariaDB-replicatie met WireGuard

  2. Grondbeginselen van tabeluitdrukkingen, deel 10 - Weergaven, SELECT * en DDL-wijzigingen

  3. Zijn er opties voor een join-tafel voor veel-op-veel verenigingen?

  4. Lijst met datum/tijd-indelingselementen in Oracle