A diferença entre o MySQL
SUBDATE() e DATE_SUB() funções é exatamente igual à diferença entre as funções ADDDATE() e DATE_ADD() funções. Uma função permite duas formas de sintaxe diferentes, enquanto a outra permite apenas uma. Este artigo demonstra a diferença.
Sintaxe
Aqui está a sintaxe para cada função.
DATE_SUB()
O
DATE_SUB() sintaxe fica assim. DATE_SUB(date,INTERVAL expr unit)
Isso aceita um valor de data, seguido pelo
INTERVAL palavra-chave e a expressão e unidade para a qual subtrair da data fornecida pelo primeiro argumento. SUBDATE()
O
SUBDATE() sintaxe permite duas formas. Você pode usar um dos seguintes formulários. SUBDATE(date,INTERVAL expr unit)
Ou
SUBDATE(expr,days)
O primeiro formulário é exatamente igual ao
DATE_SUB() sintaxe, e quando você usa esta sintaxe, o SUBDATE() função é sinônimo de DATE_SUB() . No entanto, o segundo formulário de sintaxe só está disponível ao usar o
SUBDATE() e permite que você use uma forma abreviada para especificar o número de dias a serem subtraídos da data. Exemplo
Aqui está um exemplo de uso de ambas as funções para subtrair um certo número de dias da mesma 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'; Resultado:
+------------+------------+------------+ | DATE_SUB | SUBDATE 1 | SUBDATE 2 | +------------+------------+------------+ | 2023-12-05 | 2023-12-05 | 2023-12-05 | +------------+------------+------------+
No entanto, se tentarmos usar a forma de sintaxe alternativa com
DATE_SUB() obtemos um erro. SET @date = '2023-12-10'; SELECT DATE_SUB(@date, 5) AS 'DATE_SUB 2';
Resultado:
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
E, claro, o motivo desse erro é porque
DATE_SUB() não suporta essa sintaxe. Observe que este segundo formulário de sintaxe só pode ser usado para subtrair dias a partir da data. Se você precisar subtrair qualquer outra unidade (por exemplo, meses), precisará usar a primeira sintaxe.