W MySQL możesz użyć DATEDIFF()
funkcja, aby znaleźć różnicę między dwiema datami. Działa to tak, że podajesz dwa argumenty (po jednym dla każdej daty) i DATEDIFF()
zwróci liczbę dni między dwiema datami.
Przykłady poniżej.
Składnia
Po pierwsze, oto składnia:
DATEDIFF(expr1,expr2)
Gdzie expr1
to pierwsza data, a expr2
to druga randka.
Przykład 1 – Podstawowe użycie
Oto przykład do zademonstrowania.
SELECT DATEDIFF('2020-10-30', '2020-10-01') AS 'Result';
Wynik:
+--------+ | Result | +--------+ | 29 | +--------+
W tym przykładzie pierwsza data jest późniejsza niż druga data. W tym przypadku otrzymujemy dodatnią wartość zwrotu.
Przykład 2 – Porównanie z wcześniejszą datą
Pierwsza randka nie musi być późniejsza niż druga randka. Możesz użyć wcześniejszej daty dla pierwszego argumentu, a zwróci on wartość ujemną. Jeśli zamienimy te dwa argumenty, otrzymamy:
SELECT DATEDIFF('2020-10-01', '2020-10-30') AS 'Result';
Wynik:
+--------+ | Result | +--------+ | -29 | +--------+
Przykład 3 – Wartości daty i godziny
W przypadku użycia z datetime wartości, tylko część daty jest używana do porównywania dat. Przykład:
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';
Wynik:
+----------+----------+ | Result 1 | Result 2 | +----------+----------+ | 29 | -29 | +----------+----------+
Przykład 4 – Zapytanie do bazy danych
Oto przykład użycia DATEDIFF()
w zapytaniu do bazy danych. W tym przykładzie porównuję payment_date
kolumna z dzisiejszą datą (za pomocą CURDATE()
funkcja zwracająca dzisiejszą datę):
USE sakila; SELECT DATE(payment_date) AS 'Date/Time', CURDATE(), DATEDIFF(payment_date, CURDATE()) AS 'Date' FROM payment WHERE payment_id = 1;
Wynik:
+------------+------------+-------+ | Date/Time | CURDATE() | Date | +------------+------------+-------+ | 2005-05-25 | 2018-06-25 | -4779 | +------------+------------+-------+