Mysql
 sql >> Database >  >> RDS >> Mysql

ADDDATE() vs DATE_ADD() in MySQL:qual è la differenza?

Quando utilizziamo MySQL, abbiamo la possibilità di utilizzare il ADDDATE() e DATE_ADD() funzioni ogni volta che vogliamo aggiungere un intervallo di tempo specifico a una data data. Entrambe queste funzioni fanno la stessa cosa, ma c'è una differenza tra loro.

Questo articolo mostra la differenza tra ADDDATE() e DATE_ADD() in MySQL.

Sintassi

La differenza tra queste due funzioni è nella loro sintassi. Una funzione consente due forme diverse, mentre l'altra consente un solo modulo.

DATE_AGGIUNGI()

Il DATE_ADD() la sintassi va così.

DATE_ADD(date,INTERVAL expr unit)

Questo accetta un valore di data, seguito da INTERVAL parola chiave e l'espressione e l'unità da aggiungere alla data fornita dal primo argomento.

AGGIUNGI DATA()

Il ADDDATE() la sintassi consente due forme. Puoi utilizzare uno dei seguenti moduli.

ADDDATE(date,INTERVAL expr unit)

Oppure

ADDDATE(expr,days)

La prima forma è esattamente la stessa di DATE_ADD() sintassi. Infatti, quando si utilizza questa sintassi, il ADDDATE() funzione è sinonimo di DATE_ADD() .

Tuttavia, è la seconda forma della sintassi che distingue le due funzioni. Questo secondo modulo è disponibile solo quando utilizzi il ADDDATE() funzione e ti consente di utilizzare un modo abbreviato per specificare il numero di giorni da aggiungere alla data.

Esempio

Ecco un esempio per dimostrare la differenza tra le due forme.

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';

Risultato:

+------------+------------+------------+
| DATE_ADD   | ADDDATE 1  | ADDDATE 2  |
+------------+------------+------------+
| 2020-10-03 | 2020-10-03 | 2020-10-03 |
+------------+------------+------------+

Ma se proviamo a usare il secondo modulo su ADD_DATE() , otteniamo un errore:

SET @date = '2020-10-01';
SELECT DATE_ADD(@date, 2) AS 'DATE_ADD 2';

Risultato:

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

Questo perché questa funzione non supporta tale sintassi.