sql >> Databáze >  >> RDS >> Mysql

ADDDATE() vs DATE_ADD() v MySQL:Jaký je rozdíl?

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.


  1. Datový model platformy půjček peer-to-peer

  2. Spojení více tabulek v SQL

  3. Nastavení fyzického pohotovostního režimu Active Data Guard v architektuře RAC One Node – část 2

  4. Existuje nějaký způsob, jak zajistit, aby se fond připojení JBoss znovu připojil k Oracle, když se připojení pokazí?