Při používání MySQL máme možnost použít ADDDATE()
a DATE_ADD()
funguje vždy, když chceme k danému datu přidat konkrétní časový interval. Obě tyto funkce dělají totéž, ale je mezi nimi jeden rozdíl.
Tento článek ukazuje rozdíl mezi ADDDATE()
a DATE_ADD()
v MySQL.
Syntaxe
Rozdíl mezi těmito dvěma funkcemi je v jejich syntaxi. Jedna funkce umožňuje dvě různé formy, zatímco druhá umožňuje pouze jednu formu.
DATE_ADD()
DATE_ADD()
syntaxe vypadá takto.
DATE_ADD(date,INTERVAL expr unit)
To přijímá hodnotu data, za kterou následuje INTERVAL
klíčové slovo a výraz a jednotku, kterou chcete přidat k datu poskytnutému prvním argumentem.
ADDDATE()
ADDDATE()
syntaxe umožňuje dvě formy. Můžete použít kterýkoli z následujících formulářů.
ADDDATE(date,INTERVAL expr unit)
Nebo
ADDDATE(expr,days)
První formulář je přesně stejný jako DATE_ADD()
syntax. Ve skutečnosti, při použití této syntaxe, ADDDATE()
funkce je synonymem pro DATE_ADD()
.
Je to však druhá forma syntaxe, která tyto dvě funkce odlišuje. Tento druhý formulář je dostupný pouze při použití ADDDATE()
a umožňuje vám použít zkrácený způsob k určení počtu dnů, které se mají přidat k datu.
Příklad
Zde je příklad, který demonstruje rozdíl mezi těmito dvěma 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';
Výsledek:
+------------+------------+------------+ | DATE_ADD | ADDDATE 1 | ADDDATE 2 | +------------+------------+------------+ | 2020-10-03 | 2020-10-03 | 2020-10-03 | +------------+------------+------------+
Ale pokud se pokusíme použít druhý formulář na ADD_DATE()
, dostaneme chybu:
SET @date = '2020-10-01'; SELECT DATE_ADD(@date, 2) AS 'DATE_ADD 2';
Výsledek:
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
Je to proto, že tato funkce tuto syntaxi nepodporuje.