Ao usar o MySQL, temos a opção de usar o comando
ADDDATE()
e DATE_ADD()
funções sempre que queremos adicionar um intervalo de tempo específico a uma determinada data. Ambas as funções fazem a mesma coisa, mas há uma diferença entre elas. Este artigo demonstra a diferença entre
ADDDATE()
e DATE_ADD()
em MySQL. Sintaxe
A diferença entre essas duas funções está em sua sintaxe. Uma função permite dois formulários diferentes, enquanto a outra permite apenas um formulário.
DATE_ADD()
O
DATE_ADD()
sintaxe fica assim. DATE_ADD(date,INTERVAL expr unit)
Isso aceita um valor de data, seguido pelo
INTERVAL
palavra-chave e a expressão e unidade para a qual adicionar à data fornecida pelo primeiro argumento. ADDDATE()
O
ADDDATE()
sintaxe permite duas formas. Você pode usar um dos seguintes formulários. ADDDATE(date,INTERVAL expr unit)
Ou
ADDDATE(expr,days)
O primeiro formulário é exatamente igual ao
DATE_ADD()
sintaxe. Na verdade, ao usar esta sintaxe, o ADDDATE()
função é um sinônimo para DATE_ADD()
. No entanto, é a segunda forma da sintaxe que diferencia as duas funções. Este segundo formulário só está disponível ao usar o
ADDDATE()
e permite que você use uma forma abreviada para especificar o número de dias a serem adicionados à data. Exemplo
Aqui está um exemplo para demonstrar a diferença entre as duas formas.
SET @date = '2020-10-01'; SELECT DATE_ADD(@date, INTERVAL 2 DAY) AS 'DATE_ADD', ADDDATE(@date, INTERVAL 2 DAY) AS 'ADDDATE 1', ADDDATE(@date, 2) AS 'ADDDATE 2';
Resultado:
+------------+------------+------------+ | DATE_ADD | ADDDATE 1 | ADDDATE 2 | +------------+------------+------------+ | 2020-10-03 | 2020-10-03 | 2020-10-03 | +------------+------------+------------+
Mas se tentarmos usar o segundo formulário em
ADD_DATE()
, obtemos um erro:SET @date = '2020-10-01'; SELECT DATE_ADD(@date, 2) AS 'DATE_ADD 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 '2) AS 'DATE_ADD 2'' at line 1
Isso ocorre porque esta função não suporta essa sintaxe.