V MySQL můžete použít DATEDIFF()
funkce k nalezení rozdílu mezi dvěma daty. Funguje to tak, že zadáte dva argumenty (jeden pro každé datum) a DATEDIFF()
vrátí počet dní mezi dvěma daty.
Příklady níže.
Syntaxe
Nejprve je zde syntaxe:
DATEDIFF(expr1,expr2)
Kde expr1
je první datum a expr2
je druhé rande.
Příklad 1 – Základní použití
Zde je příklad k demonstraci.
SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
Výsledek:
+--------+ | Result | +--------+ | 29 | +--------+
V tomto příkladu je první datum pozdější než druhé datum. V tomto případě dostaneme kladnou návratovou hodnotu.
Příklad 2 – Porovnání s dřívějším datem
První rande nemusí být pozdější než druhé datum. Pro první argument můžete použít dřívější datum a vrátí zápornou hodnotu. Pokud tyto dva argumenty prohodíme, dostaneme následující:
SELECT DATEDIFF('2020-10-01', '2020-10-30') AS 'Result';
Výsledek:
+--------+ | Result | +--------+ | -29 | +--------+
Příklad 3 – Hodnoty data a času
Při použití s datetime hodnoty, k porovnání dat se používá pouze datová část. Příklad:
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';
Výsledek:
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | 29 | -29 | +----------+----------+
Příklad 4 – Databázový dotaz
Zde je příklad použití DATEDIFF()
v databázovém dotazu. V tomto příkladu porovnávám payment_date
sloupec s dnešním datem (pomocí CURDATE()
funkce pro návrat dnešního data):
USE sakila; SELECT DATE(payment_date) AS 'Date/Time', CURDATE(), DATEDIFF(payment_date, CURDATE()) AS 'Date' FROM payment WHERE payment_id = 1;
Výsledek:
+------------+------------+-------+ | Date/Time | CURDATE() | Date | +------------+------------+-------+ | 2005-05-25 | 2018-06-25 | -4779 | +------------+------------+-------+