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

SUBDATE() vs DATE_SUB() w MySQL:jaka jest różnica?

Różnica między SUBDATE() MySQL i DATE_SUB() funkcje są dokładnie takie same, jak różnica między ADDDATE() i DATE_ADD() Funkcje. Jedna funkcja pozwala na dwie różne formy składni, podczas gdy druga pozwala na tylko jedną.

Ten artykuł pokazuje różnicę.

Składnia

Oto składnia każdej funkcji.

DATE_SUB()

DATE_SUB() składnia wygląda tak.

DATE_SUB(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 odjąć od daty podanej w pierwszym argumencie.

SUBDATE()

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

SUBDATE(date,INTERVAL expr unit)

Lub

SUBDATE(expr,days)

Pierwsza forma jest dokładnie taka sama jak DATE_SUB() składnia, a kiedy używasz tej składni, SUBDATE() funkcja jest synonimem DATE_SUB() .

Jednak druga forma składni jest dostępna tylko podczas korzystania z SUBDATE() funkcji i pozwala na użycie skróconego sposobu określenia liczby dni do odjęcia od daty.

Przykład

Oto przykład użycia obu funkcji do odjęcia określonej liczby dni od tej samej daty.

SET @date = '2023-12-10';
SELECT 
    DATE_SUB(@date, INTERVAL 5 DAY) AS 'DATE_SUB',
    SUBDATE(@date, INTERVAL 5 DAY) AS 'SUBDATE 1',
    SUBDATE(@date, 5) AS 'SUBDATE 2';

Wynik:

+------------+------------+------------+
| DATE_SUB   | SUBDATE 1  | SUBDATE 2  |
+------------+------------+------------+
| 2023-12-05 | 2023-12-05 | 2023-12-05 |
+------------+------------+------------+

Jeśli jednak spróbujemy użyć alternatywnej formy składni z DATE_SUB() otrzymujemy błąd.

SET @date = '2023-12-10';
SELECT DATE_SUB(@date, 5) AS 'DATE_SUB 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 '5) AS 'DATE_SUB 2'' at line 1

I oczywiście przyczyną tego błędu jest to, że DATE_SUB() nie obsługuje tej składni.

Pamiętaj, że ta druga forma składni może być używana tylko do odejmowania dni od daty. Jeśli chcesz odjąć jakąkolwiek inną jednostkę (na przykład miesiące), musisz użyć pierwszej 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. Wtyczka uwierzytelniania 'caching_sha2_password' nie jest obsługiwana

  2. Jak połączyć się z MySQL za pomocą Perla?

  3. Wiele instrukcji select w pojedynczym zapytaniu

  4. DATE_SUB() Przykłady – MySQL

  5. Kolumna obliczona z innej kolumny?