sql >> Database >  >> RDS >> Mysql

ADDDATE() vs DATE_ADD() in MySQL:wat is het verschil?

Bij gebruik van MySQL hebben we de mogelijkheid om de ADDDATE() . te gebruiken en DATE_ADD() functies wanneer we een specifiek tijdsinterval aan een bepaalde datum willen toevoegen. Beide functies doen hetzelfde, maar er is één verschil tussen hen.

Dit artikel laat het verschil zien tussen ADDDATE() en DATE_ADD() in MySQL.

Syntaxis

Het verschil tussen deze twee functies zit in hun syntaxis. De ene functie staat twee verschillende vormen toe, terwijl de andere slechts één vorm toestaat.

DATE_ADD()

De DATE_ADD() syntaxis gaat als volgt.

DATE_ADD(date,INTERVAL expr unit)

Dit accepteert een datumwaarde, gevolgd door de INTERVAL trefwoord en de uitdrukking en eenheid die moeten worden toegevoegd aan de datum die door het eerste argument wordt geleverd.

TOEVOEGEN()

De ADDDATE() syntaxis staat twee vormen toe. U kunt een van de volgende formulieren gebruiken.

ADDDATE(date,INTERVAL expr unit)

Of

ADDDATE(expr,days)

De eerste vorm is precies hetzelfde als de DATE_ADD() syntaxis. In feite, wanneer deze syntaxis wordt gebruikt, wordt de ADDDATE() functie is een synoniem voor DATE_ADD() .

Het is echter de tweede vorm van de syntaxis die de twee functies onderscheidt. Dit tweede formulier is alleen beschikbaar bij gebruik van de ADDDATE() functie, en u kunt een verkorte manier gebruiken om het aantal dagen op te geven dat aan de datum moet worden toegevoegd.

Voorbeeld

Hier is een voorbeeld om het verschil tussen de twee vormen aan te tonen.

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

Resultaat:

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

Maar als we het tweede formulier proberen te gebruiken op ADD_DATE() , krijgen we een foutmelding:

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

Resultaat:

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

Dit komt omdat deze functie die syntaxis niet ondersteunt.


  1. MySQL-aantal items binnen in clausule

  2. De beste manier om de PK-gids van de ingevoegde rij te krijgen

  3. Updaten en bestellen met ms sql

  4. Transactie-isolatie in PostgreSQL