sql >> データベース >  >> RDS >> Sqlserver

日付に追加または日付から減算するときのSQLServerの「日付がintと互換性がない」を修正

    日付を加算(または減算)しようとしているときに、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

    1. PostgreSQLBツリーインデックスに関する注意

    2. テーブル式の基礎、パート9 –ビュー、派生テーブルおよびCTEとの比較

    3. ユーザー定義タイプに関する情報を取得するにはどうすればよいですか?

    4. SQL Server 2008を使用してテーブルから上位1000行を削除するにはどうすればよいですか?