將日期時間與SQL Server 中的日期進行比較
將日期時間值與僅日期進行比較時,結果可能會出乎意料。這是因為日期時間資料類型包含日期和時間部分。例如,如果您有一個包含日期時間類型的 DateCreated 列的使用者表,則以下查詢:
Select * from [User] U where U.DateCreated = '2014-02-07'
將不會傳回任何記錄,即使該使用者是在 2014 年 2 月 7 日 12點建立的:30:47.220.
要準確比較日期時間與僅日期,請使用以下命令方法:
Select * from [User] U where U.DateCreated >= '2014-02-07' and U.DateCreated < dateadd(day,1,'2014-02-07')
此查詢是SARGable,這表示它可以使用DateCreated列上的索引。
為什麼不使用函數?
使用像 CONVERT 這樣的函數從日期時間中提取日期部分可能很誘人。但是,不建議這樣做。在WHERE 子句或連接條件中使用函數:
避免處理日期和時間範圍時也應避免使用BETWEEN
BETWEEN。請改用以下形式:
WHERE col >= '20120101' AND col < '20120201'
此形式與所有資料類型和精確度相容,無論時間部分為何。
以上是如何正確比較 SQL Server 中的 DATETIME 和 DATE 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!