sql >> Databáze >  >> RDS >> Mysql

SUBDATE() vs DATE_SUB() v MySQL:Jaký je rozdíl?

Rozdíl mezi MySQL SUBDATE() a DATE_SUB() funkce je přesně stejný jako rozdíl mezi ADDDATE() a DATE_ADD() funkcí. Jedna funkce umožňuje dvě různé syntaktické formy, zatímco druhá umožňuje pouze jednu.

Tento článek ukazuje rozdíl.

Syntaxe

Zde je syntaxe každé funkce.

DATE_SUB()

DATE_SUB() syntaxe vypadá takto.

DATE_SUB(date,INTERVAL expr unit)

To přijímá hodnotu data, za kterou následuje INTERVAL klíčové slovo a výraz a jednotku, pro kterou se má odečíst od data poskytnutého prvním argumentem.

SUBDATE()

SUBDATE() syntaxe umožňuje dvě formy. Můžete použít kterýkoli z následujících formulářů.

SUBDATE(date,INTERVAL expr unit)

Nebo

SUBDATE(expr,days)

První formulář je přesně stejný jako DATE_SUB() syntaxe, a když použijete tuto syntaxi, SUBDATE() funkce je synonymem pro DATE_SUB() .

Druhý formulář syntaxe je však dostupný pouze při použití SUBDATE() a umožňuje vám použít zkrácený způsob k určení počtu dnů, které se mají odečíst od data.

Příklad

Zde je příklad použití obou funkcí k odečtení určitého počtu dní od stejného data.

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

Výsledek:

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

Pokud se však pokusíme použít alternativní formu syntaxe s DATE_SUB() dostaneme chybu.

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

Výsledek:

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

A samozřejmě důvodem této chyby je, že DATE_SUB() tuto syntaxi nepodporuje.

Upozorňujeme, že tento druhý formulář syntaxe lze použít pouze pro odečítání dnů od data. Pokud potřebujete odečíst jakoukoli další jednotku (například měsíce), budete muset použít první syntaxi.


  1. Jak může LEFT OUTER JOIN vrátit více záznamů, než existuje v levé tabulce?

  2. Funkce MySQL COS() – Vrátí kosinus čísla v MySQL

  3. XMLAGG s problémem RTRIM

  4. Chcete-li ignorovat duplicitní klíče během „kopírování z“ v postgresql