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