2009-09-22 47 views
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)); 

有谁知道如何解决这个问题?

+0

显示我们@mintime声明。 – RBarryYoung

+0

DECLARE @MINTIME AS VARCHAR(50); – George

回答

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”通常和排除SET ANSI东西等时添加右键单击,在SSMS编辑

+0

不幸的是,这会导致完全相同的错误消息。你有什么其他的建议? – George

+0

我怀疑是另一种方式:@mintime可能不使用数据库默认排序规则 – RBarryYoung

+0

@iar:try SQL_Latin1_General_CP1_CI_AS或Latin1_General_CI_AS – gbn