Когато използваме MySQL, имаме опцията да използваме ADDDATE()
и DATE_ADD()
функции винаги, когато искаме да добавим определен интервал от време към дадена дата. И двете функции правят едно и също нещо, но има една разлика между тях.
Тази статия демонстрира разликата между ADDDATE()
и DATE_ADD()
в MySQL.
Синтаксис
Разликата между тези две функции е в техния синтаксис. Едната функция позволява две различни форми, докато другата позволява само една форма.
DATE_ADD()
DATE_ADD()
синтаксисът е така.
DATE_ADD(date,INTERVAL expr unit)
Това приема стойност за дата, последвана от INTERVAL
ключова дума и изразът и единицата, за които да добавите към датата, предоставена от първия аргумент.
ADDDATE()
ADDDATE()
синтаксисът позволява две форми. Можете да използвате някоя от следните формуляри.
ADDDATE(date,INTERVAL expr unit)
Или
ADDDATE(expr,days)
Първият формуляр е точно същият като DATE_ADD()
синтаксис. Всъщност, когато използвате този синтаксис, ADDDATE()
функцията е синоним на DATE_ADD()
.
Въпреки това, втората форма на синтаксиса разделя двете функции. Този втори формуляр е достъпен само при използване на ADDDATE()
функция и ви позволява да използвате съкратен начин да посочите броя на дните за добавяне към датата.
Пример
Ето пример за демонстриране на разликата между двете форми.
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';
Резултат:
+------------+------------+------------+ | DATE_ADD | ADDDATE 1 | ADDDATE 2 | +------------+------------+------------+ | 2020-10-03 | 2020-10-03 | 2020-10-03 | +------------+------------+------------+
Но ако се опитаме да използваме втория формуляр на ADD_DATE()
, получаваме грешка:
SET @date = '2020-10-01'; SELECT DATE_ADD(@date, 2) AS 'DATE_ADD 2';
Резултат:
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
Това е така, защото тази функция не поддържа този синтаксис.