Si vous obtenez le message d'erreur "Msg 206" indiquant "Clash de type d'opérande :la date est incompatible avec int" dans SQL Server lorsque vous essayez d'ajouter (ou de soustraire) une date, c'est probablement parce que vous essayez d'effectuer des opérations arithmétiques entre un integer
et une date
valeur.
Pour résoudre ce problème, modifiez la date
valeur à un datetime
valeur ou utilisez le DATEADD()
fonction.
Exemple d'erreur
Voici un exemple de code qui génère l'erreur :
DECLARE @date date;
SET @date = '2035-10-15';
SELECT @date + 1;
Résultat :
Msg 206, Level 16, State 2, Line 3 Operand type clash: date is incompatible with int
Dans ce cas, j'ai déclaré une variable comme valeur de date, attribué une valeur, puis j'ai essayé d'ajouter un entier à cette date.
Solution 1
Une façon de résoudre ce problème consiste à utiliser un datetime
valeur au lieu de la date
valeur :
DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT @date + 1;
Résultat :
2035-10-16 00:00:00.000
Cela a évidemment pour effet d'inclure une valeur de temps (potentiellement inutile). Nous pouvons reconvertir le résultat en une date
valeur en utilisant soit CONVERT()
ou CAST()
:
DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT CAST(@date + 1 AS date);
Résultat :
2035-10-16
Solution 2
Une autre façon de résoudre ce problème consiste à utiliser le DATEADD()
fonction pour effectuer l'arithmétique :
DECLARE @date date;
SET @date = '2035-10-15';
SELECT DATEADD(day, 1, @date);
Résultat :
2035-10-16