Wenn Sie beim Versuch, ein Datum zu addieren (oder davon zu subtrahieren), die Fehlermeldung „Msg 206“ mit dem Inhalt „Operand type clash:date is incompatible with int“ in SQL Server erhalten, liegt dies wahrscheinlich daran, dass Sie versuchen, arithmetische Berechnungen durchzuführen zwischen einer integer
und ein date
Wert.
Um dieses Problem zu beheben, ändern Sie entweder das date
Wert zu einem datetime
Wert oder verwenden Sie DATEADD()
Funktion.
Beispiel für den Fehler
Hier ist ein Codebeispiel, das den Fehler erzeugt:
DECLARE @date date;
SET @date = '2035-10-15';
SELECT @date + 1;
Ergebnis:
Msg 206, Level 16, State 2, Line 3 Operand type clash: date is incompatible with int
In diesem Fall habe ich eine Variable als Datumswert deklariert, einen Wert zugewiesen und dann versucht, diesem Datum eine Ganzzahl hinzuzufügen.
Lösung 1
Eine Möglichkeit, dieses Problem zu beheben, besteht darin, ein datetime
zu verwenden Wert anstelle des date
Wert:
DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT @date + 1;
Ergebnis:
2035-10-16 00:00:00.000
Dies hat offensichtlich den Effekt, dass ein (möglicherweise unnötiger) Zeitwert enthalten ist. Wir können das Ergebnis wieder in ein date
umwandeln Wert entweder mit CONVERT()
oder CAST()
:
DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT CAST(@date + 1 AS date);
Ergebnis:
2035-10-16
Lösung 2
Eine andere Möglichkeit, dieses Problem zu beheben, ist die Verwendung von DATEADD()
Funktion zur Durchführung der Arithmetik:
DECLARE @date date;
SET @date = '2035-10-15';
SELECT DATEADD(day, 1, @date);
Ergebnis:
2035-10-16