將日期時間值與 SQL Server中的僅日期進行比較
透過與僅包含日期部分的日期時間值進行比較來查詢資料庫記錄時,理解這一點至關重要
問題
考慮以下SQL 查詢:
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')
這種方法確保查詢包含在指定日期創建的記錄,無論時間如何
避免在WHERE 子句中使用函數
避免在WHERE 子句或連接條件中使用函數(例如Convert)非常重要,原因如下:
不要依賴 BETWEEN Either
通常建議避免日期使用 BETWEEN 運算子以及時間比較。相反,請使用以下形式:
WHERE col >= '20120101' AND col < '20120201'
無論資料類型或精確度如何,這種方法都可以一致地工作,並且還可以避免 BETWEEN 的潛在陷阱。
以上是如何正確比較 SQL Server 中的日期時間值與僅日期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!