Hvis du får fejlmeddelelsen "Msg 206", der lyder "Operand type clash:date er inkompatibel med int" i SQL Server, mens du forsøger at tilføje til (eller trække fra) en dato, er det sandsynligvis fordi du forsøger at udføre aritmetik mellem et integer
og en date
værdi.
For at løse dette problem skal du enten ændre date
værdi til en datetime
værdi eller brug DATEADD()
funktion.
Eksempel på fejlen
Her er et eksempel på kode, der producerer fejlen:
DECLARE @date date;
SET @date = '2035-10-15';
SELECT @date + 1;
Resultat:
Msg 206, Level 16, State 2, Line 3 Operand type clash: date is incompatible with int
I dette tilfælde erklærede jeg en variabel som en datoværdi, tildelte en værdi, og så forsøgte jeg at tilføje et heltal til den dato.
Løsning 1
En måde at løse dette problem på er at bruge en datetime
værdi i stedet for date
værdi:
DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT @date + 1;
Resultat:
2035-10-16 00:00:00.000
Dette har naturligvis den effekt, at der er inkluderet en (potentielt unødvendig) tidsværdi. Vi kan konvertere resultatet tilbage til en date
værdi ved hjælp af enten CONVERT()
eller CAST()
:
DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT CAST(@date + 1 AS date);
Resultat:
2035-10-16
Løsning 2
En anden måde at løse dette problem på er at bruge DATEADD()
funktion til at udføre aritmetikken:
DECLARE @date date;
SET @date = '2035-10-15';
SELECT DATEADD(day, 1, @date);
Resultat:
2035-10-16