När vi använder MySQL har vi möjlighet att använda ADDDATE()
och DATE_ADD()
fungerar när vi vill lägga till ett specifikt tidsintervall till ett givet datum. Båda dessa funktioner gör samma sak, men det finns en skillnad mellan dem.
Den här artikeln visar skillnaden mellan ADDDATE()
och DATE_ADD()
i MySQL.
Syntax
Skillnaden mellan dessa två funktioner ligger i deras syntax. En funktion tillåter två olika former, medan den andra tillåter bara en form.
DATE_ADD()
DATE_ADD()
syntax går så här.
DATE_ADD(date,INTERVAL expr unit)
Detta accepterar ett datumvärde, följt av INTERVAL
nyckelord och uttrycket och enheten som ska läggas till i det datum som anges av det första argumentet.
ADDDATE()
ADDDATE()
syntax tillåter två former. Du kan använda något av följande formulär.
ADDDATE(date,INTERVAL expr unit)
Eller
ADDDATE(expr,days)
Det första formuläret är exakt samma som DATE_ADD()
syntax. Faktum är att när du använder denna syntax, ADDDATE()
funktion är en synonym för DATE_ADD()
.
Det är dock den andra formen av syntaxen som skiljer de två funktionerna åt. Det här andra formuläret är endast tillgängligt när du använder ADDDATE()
funktion, och den låter dig använda en förkortning för att ange antalet dagar som ska läggas till datumet.
Exempel
Här är ett exempel för att visa skillnaden mellan de två formerna.
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';
Resultat:
+------------+------------+------------+ | DATE_ADD | ADDDATE 1 | ADDDATE 2 | +------------+------------+------------+ | 2020-10-03 | 2020-10-03 | 2020-10-03 | +------------+------------+------------+
Men om vi försöker använda den andra formen på ADD_DATE()
, får vi ett felmeddelande:
SET @date = '2020-10-01'; SELECT DATE_ADD(@date, 2) AS 'DATE_ADD 2';
Resultat:
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
Detta beror på att den här funktionen inte stöder den syntaxen.