1. 程式人生 > >Sql 時間做條件

Sql 時間做條件

spa 天數 條件 edi select bsp 當前 即使 sel

在sql的查詢中我們應該盡量避免在WHERE條件中的字段上用函數,如DATEDIFF,DATEADD,CONVERT

因為這樣做會使該字段上的索引失效,影響SQL語句的性能。即使該字段上沒有索引,也會給sql帶來壓力。

在以時間做條件查詢的時候,比如要查詢1天前的數據多數人會這麽寫

--前一天數據
SELECT * FROM TableA WHERE DATEDIFF(DAY,dtTime,GETDATE()) < 1
--當前時間到昨天的數據
SELECT * FROM TableA WHERE DATEDIFF(DAY,dtTime,GETDATE()) <= 1

我們應該采用以下的寫法:

--前一天數據
SELECT * FROM TableA WHERE dtTime > CAST(GETDATE()-1 AS date) AND dtTime< CAST(GETDATE() AS date)
--當前時間到昨天的數據
SELECT * FROM TableA WHERE dtTime > CAST(GETDATE()-1 AS date) 

Sql 時間做條件