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.