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.