我有一个包含两列的表 - ID 为 int,日期由于某种原因存储为 nvarchar。
最近在 ID 字段上创建了一个非聚集索引。现在在我的查询中,当我将日期从 nvarchar 转换为 date 时,它给了我一个“将表达式转换为数据类型 datetime 的算术溢出错误”。例外。
如果我从查询中删除 id 字段,则转换效果很好。同样,如果我从查询中删除日期字段转换,它再次完美运行。如果我删除索引,原始查询将完美运行。
我现在的问题是,为什么 ID 列上的索引会扰乱我认为无关的日期列中的转换?
对此的任何解释都非常感谢。查询是:
select e.date ,e.id as id from dbo.table1 e,dbo.table2 d with (nolock)
where e.id=d.id and
convert(datetime,e.date) between convert(datetime,'07/01/2012')
and convert(datetime,'07/02/2012') group by e.date,e.id