我在一个非常大的表中有一个SQL datetime
字段。它被编入了索引,需要查询。
问题是SQL总是存储时间部分(即使一直是午夜),但是搜索是当天的,而不是时间。
declare @dateVar datetime = '2013-03-11;
select t.[DateColumn]
from MyTable t
where t.[DateColumn] = dateVar;
不会返回任何内容,因为t.[DateColumn]
始终包含时间部分。
我的问题是,解决这个问题的最好方法是什么?
似乎有两组主要的选项:
dateadd
创建第二个变量,并使用between ... and
或>= ... and ... <=
。t.[DateColumn]
转换为只包含日期的组件-我认为这会导致所有索引被忽略。这两个看起来都很混乱-我真的不想做一个范围比较或扫描表。
有没有更好的方法?
如果这些选项中的一个始终是最优的方式,那么如何以及为什么?
https://stackoverflow.com/questions/15344661
复制相似问题