代码之家  ›  专栏  ›  技术社区  ›  Chris Kimpton

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

  •  2
  • Chris Kimpton  · 技术社区  · 17 年前

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

    我现在正试图将它的内容与我的一个主表进行比较。

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

    服务器排序规则是Latin1\u General\u CI\u 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)
    

    当做 克里斯

    2 回复  |  直到 17 年前
        1
  •  5
  •   Nuno G    17 年前

    正在货币比较中报告错误 ,而不是datediff,请尝试对货币进行强制排序。

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

        2
  •  0
  •   Rajasekaran Rajasekaran    17 年前

    即使你有问题。在@table或permenant表中插入excel的内容,并在选择进行比较时提供该表的排序规则

    推荐文章