首頁 >資料庫 >mysql教程 >如何正確比較 SQL Server 中的日期時間值與僅日期?

如何正確比較 SQL Server 中的日期時間值與僅日期?

DDD
DDD原創
2025-01-05 19:52:45134瀏覽

How to Correctly Compare Datetime Values with Only Dates in SQL Server?

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

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