我在一個非常大的表中有一個SQL datetime
字段。它被索引並需要被查詢。在Microsoft SQL Server中比較日期的最佳方法是什麼?
問題是,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]
轉換爲僅限日期的組件 - 我認爲這會導致任何索引被忽略。
這兩種看起來都很混亂 - 我並不真想進行範圍比較或掃描表格。
有沒有更好的方法?
如果其中一個選項始終是最佳方式,那麼如何以及爲什麼?
@凱斯感謝您指定的例子..和很好的問題;) – 2013-03-12 12:59:03