我想知道什麼是針對具有日期(無時間)的記錄集的日期時間查詢的「最佳實踐」方法。MSSQL針對一天或一天範圍的日期範圍的最佳查詢
我使用了幾個查詢,它們使用日期時間數據類型從記錄集中返回基於日期範圍的記錄,這意味着每個記錄都需要使用範圍進行檢查。
查詢的例子是:
Select *
FROM Usages
where CreationDateTime between '1/1/2012' AND '1/2/2012 11:59:59'
我知道用BETWEEN
是耗資源,並在檢查的日期的日期時間數據類型總是會非常資源緊張,但我想聽到別人在這種情況下使用(或將使用)的內容。
我會得到的日期時間記錄轉換爲像一個日期的任何類型的性能提升:
Select *
FROM Usages
where CONVERT(DATE,CreationDateTime) between '1/1/2012' AND '1/2/2012'
,或者執行的再/再少更大的支票?
Select *
FROM Usages
where (CreationDateTime > '1/1/2012')
AND (CreationDateTime < '1/2/2012 11:59:59')
感謝您的反饋,我沒有意識到使用20120201而不是02/01/2012以這種方式工作,並感謝確認處理這些類型查詢的最佳方法。 – Eric 2012-08-14 19:20:48
@eric - 20120201T00:00:00.000''的好處是它不依賴於語言*(它總是被解釋爲日期部分的'YYYYMMDD')*。 「02/01/2012」可以是2月1日或2月1日,取決於你來自哪裏。 – MatBailie 2012-08-15 07:28:57