日付を加算(または減算)しようとしているときに、SQL Serverで「オペランドタイプの衝突:日付はintと互換性がありません」というエラーメッセージ「メッセージ206」が表示される場合は、算術演算を実行しようとしていることが原因である可能性があります。 integer
の間 およびdate
価値。
この問題を修正するには、date
を変更します datetime
の値 値を設定するか、DATEADD()
を使用します 機能。
エラーの例
エラーを生成するコードの例を次に示します。
DECLARE @date date;
SET @date = '2035-10-15';
SELECT @date + 1;
結果:
Msg 206, Level 16, State 2, Line 3 Operand type clash: date is incompatible with int
この場合、変数を日付値として宣言し、値を割り当ててから、その日付に整数を追加しようとしました。
ソリューション1
この問題を修正する1つの方法は、datetime
を使用することです。 date
の代わりに値 値:
DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT @date + 1;
結果:
2035-10-16 00:00:00.000
これには明らかに、(潜在的に不要な)時間値が含まれるという効果があります。結果をdate
に戻すことができます CONVERT()
のいずれかを使用した値 またはCAST()
:
DECLARE @date datetime;
SET @date = '2035-10-15';
SELECT CAST(@date + 1 AS date);
結果:
2035-10-16
ソリューション2
この問題を修正する別の方法は、DATEADD()
を使用することです。 算術演算を実行する関数:
DECLARE @date date;
SET @date = '2035-10-15';
SELECT DATEADD(day, 1, @date);
結果:
2035-10-16