Korzystając z MySQL, mamy możliwość użycia funkcji ADDDATE()
i DATE_ADD()
działa zawsze, gdy chcemy dodać określony przedział czasowy do danej daty. Obie te funkcje robią to samo, ale jest między nimi jedna różnica.
W tym artykule pokazano różnicę między ADDDATE()
i DATE_ADD()
w MySQL.
Składnia
Różnica między tymi dwiema funkcjami polega na ich składni. Jedna funkcja pozwala na dwie różne formy, podczas gdy druga pozwala na tylko jedną formę.
DATE_ADD()
DATE_ADD()
składnia wygląda tak.
DATE_ADD(date,INTERVAL expr unit)
Akceptuje wartość daty, po której następuje INTERVAL
słowo kluczowe oraz wyrażenie i jednostkę, dla której należy dodać datę podaną przez pierwszy argument.
DODAJDATA()
ADDDATE()
składnia pozwala na dwie formy. Możesz użyć jednego z następujących formularzy.
ADDDATE(date,INTERVAL expr unit)
Lub
ADDDATE(expr,days)
Pierwsza forma jest dokładnie taka sama jak DATE_ADD()
składnia. W rzeczywistości, używając tej składni, ADDDATE()
funkcja jest synonimem DATE_ADD()
.
Jednak jest to druga forma składni, która odróżnia te dwie funkcje. Ten drugi formularz jest dostępny tylko przy użyciu funkcji ADDDATE()
funkcji i pozwala na użycie skróconego sposobu określenia liczby dni do dodania do daty.
Przykład
Oto przykład pokazujący różnicę między tymi dwiema formami.
SET @date = '2020-10-01'; SELECT DATE_ADD(@date, INTERVAL 2 DAY) AS 'DATE_ADD', ADDDATE(@date, INTERVAL 2 DAY) AS 'ADDDATE 1', ADDDATE(@date, 2) AS 'ADDDATE 2';
Wynik:
+------------+------------+------------+ | DATE_ADD | ADDDATE 1 | ADDDATE 2 | +------------+------------+------------+ | 2020-10-03 | 2020-10-03 | 2020-10-03 | +------------+------------+------------+
Ale jeśli spróbujemy użyć drugiego formularza w ADD_DATE()
, pojawia się błąd:
SET @date = '2020-10-01'; SELECT DATE_ADD(@date, 2) AS 'DATE_ADD 2';
Wynik:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2) AS 'DATE_ADD 2'' at line 1
Dzieje się tak, ponieważ ta funkcja nie obsługuje tej składni.