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

ADDDATE() vs DATE_ADD() i MySQL:Hvad er forskellen?

Når du bruger MySQL, har vi mulighed for at bruge ADDDATE() og DATE_ADD() fungerer, når vi ønsker at tilføje et bestemt tidsinterval til en given dato. Begge disse funktioner gør det samme, men der er én forskel mellem dem.

Denne artikel demonstrerer forskellen mellem ADDDATE() og DATE_ADD() i MySQL.

Syntaks

Forskellen mellem disse to funktioner ligger i deres syntaks. Den ene funktion giver mulighed for to forskellige former, mens den anden kun tillader én form.

DATE_ADD()

DATE_ADD() syntaks går sådan her.

DATE_ADD(date,INTERVAL expr unit)

Dette accepterer en datoværdi efterfulgt af INTERVAL nøgleord og det udtryk og den enhed, der skal tilføjes til datoen fra det første argument.

ADDDATE()

ADDDATE() syntaks tillader to former. Du kan bruge en af ​​følgende formularer.

ADDDATE(date,INTERVAL expr unit)

Eller

ADDDATE(expr,days)

Den første form er nøjagtig den samme som DATE_ADD() syntaks. Faktisk, når du bruger denne syntaks, er ADDDATE() funktion er et synonym for DATE_ADD() .

Det er dog den anden form for syntaksen, der adskiller de to funktioner. Denne anden formular er kun tilgængelig, når du bruger ADDDATE() funktion, og det giver dig mulighed for at bruge en stenografi til at angive antallet af dage, der skal føjes til datoen.

Eksempel

Her er et eksempel for at demonstrere forskellen mellem de to former.

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 hvis vi prøver at bruge den anden form på ADD_DATE() , får vi en fejl:

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

Dette skyldes, at denne funktion ikke understøtter denne syntaks.


  1. Ting du bør vide, før du lærer Oracle

  2. BIN_TO_NUM() Funktion i Oracle

  3. BESTIL AF med indre forespørgsel, hvilket giver ORA-00907 manglende højre parentes

  4. Magicbricks migrerer til MariaDB for at understøtte dets højvolumentrafik