В MySQL можете да използвате DATEDIFF()
функция за намиране на разликата между две дати. Начинът, по който работи, е, че предоставяте два аргумента (по един за всяка дата) и DATEDIFF()
ще върне броя на дните между двете дати.
Примери по-долу.
Синтаксис
Първо, ето синтаксиса:
DATEDIFF(expr1,expr2)
Където expr1
е първата дата и expr2
е втората среща.
Пример 1 – Основна употреба
Ето пример за демонстрация.
SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
Резултат:
+--------+ | Result | +--------+ | 29 | +--------+
В този пример първата дата е по-късна от втората. В този случай получаваме положителна върната стойност.
Пример 2 – Сравнение с по-ранна дата
Първата дата не трябва да е по-късна от втората. Можете да използвате по-ранна дата за първия аргумент и той ще върне отрицателна стойност. Ако разменим тези два аргумента, получаваме следното:
SELECT DATEDIFF('2020-10-01', '2020-10-30') AS 'Result';
Резултат:
+--------+ | Result | +--------+ | -29 | +--------+
Пример 3 – Стойности за дата и час
Когато се използва с datetime стойности, само частта за дата се използва за сравняване на датите. Пример:
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';
Резултат:
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | 29 | -29 | +----------+----------+
Пример 4 – Заявка към база данни
Ето пример за използване на DATEDIFF()
в заявка за база данни. В този пример сравнявам payment_date
колона с днешна дата (с помощта на CURDATE()
функция за връщане на днешната дата):
USE sakila; SELECT DATE(payment_date) AS 'Date/Time', CURDATE(), DATEDIFF(payment_date, CURDATE()) AS 'Date' FROM payment WHERE payment_id = 1;
Резултат:
+------------+------------+-------+ | Date/Time | CURDATE() | Date | +------------+------------+-------+ | 2005-05-25 | 2018-06-25 | -4779 | +------------+------------+-------+