当前位置:  开发笔记 > 数据库 > 正文

SQL Server 2005日期比较 - 排序规则问题

如何解决《SQLServer2005日期比较-排序规则问题》经验,为你挑选了1个好方法。

在我的数据库中,我有一个通过链接服务器选项从Excel工作表创建的表.

我现在正在尝试将其内容与我的主要表格进行比较.

我比较的表位于同一个数据库中.

两个表中都有一个日期列,两个类型都是datetime,并且具有SQL_Latin1_General_CP1_CI_AS的排序规则,与DB相同.

服务器排序规则是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.

我已尝试使用和不使用COLLATE选项,使用两种排序规则设置.

我的查询是:

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)

提前感谢任何想法.

问候,克里斯



1> Nuno G..:

在货币比较h.currency_cd = hxl.currency_cd上报告错误,而不是在datediff 上报告错误,因此请尝试强制对货币进行整理.

排序规则仅与字符(char,varchar,nvarchar)和文本类型相关.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有