Se você estiver recebendo a mensagem de erro “Msg 206” que diz “Choque de tipo de operando:data é incompatível com int” no SQL Server ao tentar adicionar (ou subtrair) uma data, provavelmente é porque você está tentando realizar cálculos aritméticos entre um
integer
e uma date
valor. Para corrigir esse problema, altere a
date
valor para um datetime
valor ou use o DATEADD()
função. Exemplo do erro
Aqui está um exemplo de código que produz o erro:
DECLARE @date date;
SET @date = '2035-10-15';
SELECT @date + 1;
Resultado:
Msg 206, Level 16, State 2, Line 3 Operand type clash: date is incompatible with int
Nesse caso, declarei uma variável como um valor de data, atribuí um valor e tentei adicionar um inteiro a essa data.
Solução 1
Uma maneira de corrigir esse problema é usar um
datetime
valor em vez da date
valor:DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT @date + 1;
Resultado:
2035-10-16 00:00:00.000
Isso obviamente tem o efeito de incluir um valor de tempo (potencialmente desnecessário). Podemos converter o resultado de volta para uma
date
valor usando CONVERT()
ou CAST()
:DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT CAST(@date + 1 AS date);
Resultado:
2035-10-16
Solução 2
Outra maneira de corrigir esse problema é usar o
DATEADD()
função para realizar a aritmética:DECLARE @date date;
SET @date = '2035-10-15';
SELECT DATEADD(day, 1, @date);
Resultado:
2035-10-16