0

ストアド プロシージャを作成しようとしていますが、次のエラー メッセージが表示されます。

Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.

このエラーは 33 行目で発生し、次のようになります。

SET @MINTIME = (SELECT CONVERT(varchar,DATEADD(MONTH,-1,GETDATE()),112));

この問題を解決する方法を知っている人はいますか?

4

1 に答える 1

3

通常、これは機能します

SET @MINTIME =
(SELECT CONVERT(varchar,DATEADD(MONTH,-1,GETDATE()),112)) COLLATE DATABASE_DEFAULT;

または

テーブル変数などの列定義にのみ適用されます: DECLARE @MINTIME varchar(??) COLLATE DATABASE_DEFAULT

@mintime 照合順序 (DECLARE 時間として) がデータベース照合順序 (varchar への変換で使用される) と一致しないなど、どこかに不一致があるために発生します。

編集:この行でよろしいですか?エラーは通常、文字列比較で発生します。単純な代入では、右側の式の照合が左側の照合に強制されます。

ランダムな考え:33行目、これは通常1行目が「CREATE PROC」であり、右クリック時に追加されたSET ANSIなどを除外し、SSMSで編集します

于 2009-09-22T14:14:03.640 に答える