Als u de foutmelding "Msg 206" krijgt met de tekst "Operand type clash:date is incompatibel met int" in SQL Server terwijl u probeert toe te voegen aan (of af te trekken van) een datum, komt dit waarschijnlijk omdat u probeert om rekenkundige bewerkingen uit te voeren tussen een integer
en een date
waarde.
Om dit probleem op te lossen, wijzigt u ofwel de date
waarde naar een datetime
waarde of gebruik de DATEADD()
functie.
Voorbeeld van de fout
Hier is een voorbeeld van code die de fout veroorzaakt:
DECLARE @date date;
SET @date = '2035-10-15';
SELECT @date + 1;
Resultaat:
Msg 206, Level 16, State 2, Line 3 Operand type clash: date is incompatible with int
In dit geval heb ik een variabele als datumwaarde gedeclareerd, een waarde toegewezen en vervolgens geprobeerd een geheel getal aan die datum toe te voegen.
Oplossing 1
Een manier om dit probleem op te lossen is het gebruik van een datetime
waarde in plaats van de date
waarde:
DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT @date + 1;
Resultaat:
2035-10-16 00:00:00.000
Dit heeft uiteraard tot gevolg dat er een (mogelijk onnodige) tijdswaarde wordt opgenomen. We kunnen het resultaat terug converteren naar een date
waarde met behulp van CONVERT()
of CAST()
:
DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT CAST(@date + 1 AS date);
Resultaat:
2035-10-16
Oplossing 2
Een andere manier om dit probleem op te lossen is door de DATEADD()
. te gebruiken functie om de rekenkunde uit te voeren:
DECLARE @date date;
SET @date = '2035-10-15';
SELECT DATEADD(day, 1, @date);
Resultaat:
2035-10-16