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