Si recibe el mensaje de error "Msg 206" que dice "Choque de tipo de operando:la fecha es incompatible con int" en SQL Server mientras intenta agregar (o restar) una fecha, probablemente se deba a que está tratando de realizar operaciones aritméticas. entre un integer y una date valor.
Para solucionar este problema, cambie la date valor a un datetime valor o use el DATEADD() función.
Ejemplo del error
Aquí hay un ejemplo de código que produce el error:
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
En este caso, declaré una variable como valor de fecha, asigné un valor y luego traté de agregar un número entero a esa fecha.
Solución 1
Una forma de solucionar este problema es usar un datetime valor en lugar de la date valor:
DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT @date + 1; Resultado:
2035-10-16 00:00:00.000
Obviamente, esto tiene el efecto de incluir un valor de tiempo (potencialmente innecesario). Podemos volver a convertir el resultado en una date valor utilizando CONVERT() o CAST() :
DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT CAST(@date + 1 AS date); Resultado:
2035-10-16
Solución 2
Otra forma de solucionar este problema es usar DATEADD() función para realizar la aritmética:
DECLARE @date date;
SET @date = '2035-10-15';
SELECT DATEADD(day, 1, @date); Resultado:
2035-10-16