我们正在尝试创建存储过程,但是我们遇到以下错误消息:
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));
有谁知道如何解决这个问题?
答案 0 :(得分:3)
通常情况下,这是有效的
SET @MINTIME =
(SELECT CONVERT(varchar,DATEADD(MONTH,-1,GETDATE()),112)) COLLATE DATABASE_DEFAULT;
或者
仅适用于列defs,例如表变量: DECLARE @MINTIME varchar(??)COLLATE DATABASE_DEFAULT
之所以发生这种情况,是因为您在某处出现了不匹配,例如@mintime排序规则(因为DECLARE时间)与数据库排序规则不匹配(转换为varchar使用)
编辑:你确定这是这条线吗? 错误通常发生在字符串比较中。在一个简单的赋值中,右手表达式的整理将被强制转换为左手整理。
随机思考:第33行,这是第1行通常是“CREATE PROC”的地方,当你右键单击,在SSMS中编辑时,不包括添加的SET ANSI东西等