W MariaDB, DATEDIFF()
to wbudowana funkcja daty i czasu, która zwraca różnicę w dniach między dwiema datami.
Przyjmuje dwa argumenty, z których oba są wyrażeniami daty lub daty i godziny. Następnie odejmuje drugą datę od pierwszej.
Składnia
Składnia wygląda tak:
DATEDIFF(expr1,expr2)
Następnie zwraca expr1 - expr2
.
Przykład
Oto przykład:
SELECT DATEDIFF('2030-01-25', '2030-01-20');
Wynik:
+--------------------------------------+ | DATEDIFF('2030-01-25', '2030-01-20') | +--------------------------------------+ | 5 | +--------------------------------------+
Oto znowu, ale z zamienionymi datami:
SELECT DATEDIFF('2030-01-20', '2030-01-25');
Wynik:
+--------------------------------------+ | DATEDIFF('2030-01-20', '2030-01-25') | +--------------------------------------+ | -5 | +--------------------------------------+
Wartości daty i godziny
Oto przykład wykorzystujący wartości daty i godziny:
SELECT DATEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59');
Wynik:
+--------------------------------------------------------+ | DATEDIFF('2030-01-25 00:00:00', '2030-01-20 23:59:59') | +--------------------------------------------------------+ | 5 | +--------------------------------------------------------+
Oto kolejny przykład:
SELECT DATEDIFF('2030-01-25 00:00:00', '2030-01-25 23:59:59');
Wynik:
+--------------------------------------------------------+ | DATEDIFF('2030-01-25 00:00:00', '2030-01-25 23:59:59') | +--------------------------------------------------------+ | 0 | +--------------------------------------------------------+
W tym przypadku, mimo że był to prawie cały dzień, nie był całkiem, więc wynik to 0
.
Aktualna data
Tutaj przekazujemy NOW()
jako drugi argument:
SELECT
NOW(),
DATEDIFF('2030-01-20', NOW());
Wynik:
+---------------------+-------------------------------+ | NOW() | DATEDIFF('2030-01-20', NOW()) | +---------------------+-------------------------------+ | 2021-05-10 10:03:08 | 3177 | +---------------------+-------------------------------+
W tym przypadku od teraz do drugiej daty jest 3177 dni.
Nieprawidłowe argumenty
Po przekazaniu jakichkolwiek nieprawidłowych argumentów, DATEDIFF()
zwraca null
:
SELECT DATEDIFF('Homer', 'Simpson');
Wynik:
+------------------------------+ | DATEDIFF('Homer', 'Simpson') | +------------------------------+ | NULL | +------------------------------+
Brakujący argument
Wywołanie DATEDIFF()
nieprawidłowa liczba argumentów lub bez przekazywania żadnych argumentów skutkuje błędem:
SELECT DATEDIFF();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DATEDIFF'
Oraz:
SELECT DATEDIFF('2030-05-21');
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'DATEDIFF'