sql >> Database >  >> RDS >> Sqlserver

Fix "datum is incompatibel met int" in SQL Server bij toevoegen aan of aftrekken van een datum

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

  1. SQL TUSSEN-Slimme tips om te scannen op een reeks waarden

  2. Hoe te testen of een MySQL-query succesvol was in het wijzigen van databasetabelgegevens?

  3. Een string zoeken in databases van SQL Server

  4. CSV-bestand importeren in SQL Server