Mysql
 sql >> Baza danych >  >> RDS >> Mysql

ADDDATE() vs DATE_ADD() w MySQL:jaka jest różnica?

Korzystając z MySQL, mamy możliwość użycia funkcji ADDDATE() i DATE_ADD() działa zawsze, gdy chcemy dodać określony przedział czasowy do danej daty. Obie te funkcje robią to samo, ale jest między nimi jedna różnica.

W tym artykule pokazano różnicę między ADDDATE() i DATE_ADD() w MySQL.

Składnia

Różnica między tymi dwiema funkcjami polega na ich składni. Jedna funkcja pozwala na dwie różne formy, podczas gdy druga pozwala na tylko jedną formę.

DATE_ADD()

DATE_ADD() składnia wygląda tak.

DATE_ADD(date,INTERVAL expr unit)

Akceptuje wartość daty, po której następuje INTERVAL słowo kluczowe oraz wyrażenie i jednostkę, dla której należy dodać datę podaną przez pierwszy argument.

DODAJDATA()

ADDDATE() składnia pozwala na dwie formy. Możesz użyć jednego z następujących formularzy.

ADDDATE(date,INTERVAL expr unit)

Lub

ADDDATE(expr,days)

Pierwsza forma jest dokładnie taka sama jak DATE_ADD() składnia. W rzeczywistości, używając tej składni, ADDDATE() funkcja jest synonimem DATE_ADD() .

Jednak jest to druga forma składni, która odróżnia te dwie funkcje. Ten drugi formularz jest dostępny tylko przy użyciu funkcji ADDDATE() funkcji i pozwala na użycie skróconego sposobu określenia liczby dni do dodania do daty.

Przykład

Oto przykład pokazujący różnicę między tymi dwiema 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';

Wynik:

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

Ale jeśli spróbujemy użyć drugiego formularza w ADD_DATE() , pojawia się błąd:

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

Wynik:

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

Dzieje się tak, ponieważ ta funkcja nie obsługuje tej składni.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa funkcja REGEX_REPLACE() w MySQL

  2. PostgreSQL GROUP BY różni się od MySQL?

  3. Grupuj według daty tylko w kolumnie Datetime

  4. Funkcja MySQL SIN() — zwraca sinus liczby w MySQL

  5. MySQL:Sortuj wartości GROUP_CONCAT