2009-02-12 48 views
2

在我的数据库中,我有一个通过链接服务器选项从Excel工作表创建的表。SQL Server 2005日期比较 - 排序规则问题

我现在试图比较它的内容与我的主表之一。

我比较的表格在同一个数据库中。

这两个表中都有一个日期列,这两种类型都是日期时间,并且具有SQL_Latin1_General_CP1_CI_AS的排序规则,与数据库相同。

服务器排序规则是Latin1_General_CI_AS

然而,当我尝试运行一个查询表之间比较的日期,我得到的错误:

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

我已经有和无分页选项尝试,使用两个排序规则设置。

我的查询是:

select * , hxl.holiday_dt, 
datediff(d, h.holiday_dt collate SQL_Latin1_General_CP1_CI_AS, 
      hxl.holiday_dt collate SQL_Latin1_General_CP1_CI_AS) 
from holiday h, Holiday_XL hxl 
where h.currency_cd=hxl.currency_cd 

其实涉及到两个表的任何查询提供了完全相同的排序规则的错误,比如这一个:

select count(*) 
from Holiday_XL c 
where c.currency_cd in (select distinct h.currency_cd from holiday h) 

先感谢您的任何想法。

的问候, 克里斯

回答

5

的错误所报告的货币比较h.currency_cd = hxl.currency_cd,而不是DATEDIFF,所以尽量在货币力量整理。

排序规则仅适用于字符(char,varchar,nvarchar)和文本类型。

+0

似乎已经完成了它 - 谢谢vm。 – 2009-02-12 10:45:47

0

根据排序规则并给出整理表级别,可以在排序主题的网络搜索中使用许多提示和代码。

还有,如果你有问题。将excel的内容插入到@table或permenant表中,并在选择比较时提供Collat​​ion到该表格