Ако получавате съобщение за грешка „Msg 206“, което гласи „Сблъсък на тип операнд:датата е несъвместима с int“ в SQL Server, докато се опитвате да добавите (или извадите) дата, това вероятно е защото се опитвате да извършите аритметика между integer
и date
стойност.
За да коригирате този проблем, променете date
стойност към datetime
стойност или използвайте DATEADD()
функция.
Пример за грешката
Ето пример за код, който създава грешката:
DECLARE @date date;
SET @date = '2035-10-15';
SELECT @date + 1;
Резултат:
Msg 206, Level 16, State 2, Line 3 Operand type clash: date is incompatible with int
В този случай декларирах променлива като стойност за дата, присвоих стойност, след което се опитах да добавя цяло число към тази дата.
Решение 1
Един от начините да коригирате този проблем е да използвате datetime
стойност вместо date
стойност:
DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT @date + 1;
Резултат:
2035-10-16 00:00:00.000
Това очевидно има ефект от включването на (потенциално ненужна) времева стойност. Можем да преобразуваме резултата обратно в date
стойност с помощта на CONVERT()
или CAST()
:
DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT CAST(@date + 1 AS date);
Резултат:
2035-10-16
Решение 2
Друг начин да коригирате този проблем е да използвате DATEADD()
функция за извършване на аритметиката:
DECLARE @date date;
SET @date = '2035-10-15';
SELECT DATEADD(day, 1, @date);
Резултат:
2035-10-16