將僅日期查詢與SQL Server 中的日期時間欄位相符
使用僅日期值查詢SQL Server 中的日期時間欄位時,這是必不可少的了解其含義以確保結果準確。
在提供的內容中範例:
Select * from [User] U where U.DateCreated = '2014-02-07'
如果使用者是在「2014-02-07 12:30:47.220」建立的,則查詢將不會傳回任何結果,因為它只比較精確的日期時間值。
推薦方法
解決此問題並準確匹配帶有日期時間字段的僅限日期值,建議使用以下方法:
Select * from [User] U where U.DateCreated >= '2014-02-07' and U.DateCreated < dateadd(day,1,'2014-02-07')
此查詢指定一個範圍,其中包含日期時間值為“2014-02-07”或之後但之前的所有記錄'2014-02-08.'
SARGable謂詞的重要性和避免函數
在將日期時間值與僅日期條件進行比較時,避免在 where 子句中使用諸如 Convert() 之類的函數至關重要。這可能會阻礙索引的使用、減慢查詢速度並引入不必要的計算。相反,修改查詢以適應資料(也稱為使用 SARGable 謂詞)可以增強查詢效能。
日期範圍查詢的最佳實務
此外,建議查詢日期範圍時避免使用 BETWEEN 運算子。相反,請使用以下形式以獲得最佳結果:
WHERE col >= '20120101' AND col < '20120201'
此方法可確保與所有資料類型和精確度的兼容性,並消除日期時間值的時間部分的潛在問題。
以上是如何在 SQL Server 中正確配對僅日期查詢與日期時間欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!