首頁 >資料庫 >mysql教程 >如何正確比較 SQL Server 中的 DATETIME 和 DATE 值?

如何正確比較 SQL Server 中的 DATETIME 和 DATE 值?

Barbara Streisand
Barbara Streisand原創
2025-01-04 17:27:39442瀏覽

How Can I Correctly Compare DATETIME and DATE Values in SQL Server?

將日期時間與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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn