I MySQL kan du använda DATEDIFF()
funktion för att hitta skillnaden mellan två datum. Så det fungerar är att du tillhandahåller två argument (ett för varje datum) och DATEDIFF()
returnerar antalet dagar mellan de två datumen.
Exempel nedan.
Syntax
Först, här är syntaxen:
DATEDIFF(expr1,expr2)
Där expr1
är det första datumet och expr2
är den andra dejten.
Exempel 1 – Grundläggande användning
Här är ett exempel att visa.
SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
Resultat:
+--------+ | Result | +--------+ | 29 | +--------+
I det här exemplet är det första datumet senare än det andra datumet. I det här fallet får vi ett positivt returvärde.
Exempel 2 – Jämförelse med ett tidigare datum
Det första datumet behöver inte vara ett senare datum än det andra. Du kan använda ett tidigare datum för det första argumentet och det kommer att returnera ett negativt värde. Om vi byter om de två argumenten får vi följande:
SELECT DATEDIFF('2020-10-01', '2020-10-30') AS 'Result';
Resultat:
+--------+ | Result | +--------+ | -29 | +--------+
Exempel 3 – Datetime-värden
När den används med datetime värden används endast datumdelen för att jämföra datumen. Exempel:
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';
Resultat:
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | 29 | -29 | +----------+----------+
Exempel 4 – Databasfråga
Här är ett exempel på hur du använder DATEDIFF()
i en databasfråga. I det här exemplet jämför jag payment_date
kolumn med dagens datum (genom att använda CURDATE()
funktion för att returnera dagens datum):
USE sakila; SELECT DATE(payment_date) AS 'Date/Time', CURDATE(), DATEDIFF(payment_date, CURDATE()) AS 'Date' FROM payment WHERE payment_id = 1;
Resultat:
+------------+------------+-------+ | Date/Time | CURDATE() | Date | +------------+------------+-------+ | 2005-05-25 | 2018-06-25 | -4779 | +------------+------------+-------+