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.