sql >> Base de Datos >  >> RDS >> Sqlserver

Arreglar "la fecha es incompatible con int" en SQL Server al agregar o restar de una fecha

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