Разликата между MySQL SUBDATE()
и DATE_SUB()
функции е точно същата като разликата между ADDDATE()
и DATE_ADD()
функции. Едната функция позволява две различни синтактични форми, докато другата позволява само една.
Тази статия показва разликата.
Синтаксис
Ето синтаксиса за всяка функция.
DATE_SUB()
DATE_SUB()
синтаксисът е така.
DATE_SUB(date,INTERVAL expr unit)
Това приема стойност за дата, последвана от INTERVAL
ключова дума и изразът и единицата, за които да се извадят от датата, предоставена от първия аргумент.
SUBDATE()
SUBDATE()
синтаксисът позволява две форми. Можете да използвате някоя от следните формуляри.
SUBDATE(date,INTERVAL expr unit)
Или
SUBDATE(expr,days)
Първият формуляр е точно същият като DATE_SUB()
синтаксис, а когато използвате този синтаксис, SUBDATE()
функцията е синоним на DATE_SUB()
.
Въпреки това, вторият синтактичен формуляр е достъпен само при използване на SUBDATE()
функция и ви позволява да използвате съкратен начин да посочите броя на дните за изваждане от датата.
Пример
Ето пример за използване на двете функции за изваждане на определен брой дни от една и съща дата.
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';
Резултат:
+------------+------------+------------+ | DATE_SUB | SUBDATE 1 | SUBDATE 2 | +------------+------------+------------+ | 2023-12-05 | 2023-12-05 | 2023-12-05 | +------------+------------+------------+
Въпреки това, ако се опитаме да използваме алтернативния синтаксис формуляр с DATE_SUB()
получаваме грешка.
SET @date = '2023-12-10'; SELECT DATE_SUB(@date, 5) AS 'DATE_SUB 2';
Резултат:
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
И разбира се, причината за тази грешка е, че DATE_SUB()
не поддържа този синтаксис.
Имайте предвид, че този втори синтактичен формуляр може да се използва само за изваждане на дни от датата. Ако трябва да извадите друга единица (например месеци), ще трябва да използвате първия синтаксис.