是否有一種方法在TSQL查詢行的日期時間列的值是「現在減去(一定的時間)」來選擇時間範圍?查詢'Now'的日期時間列減去一定的時間?
例如在MySQL中我可以建立這個謂詞,如:
(EndTime BETWEEN NOW() - INTERVAL 2 DAY AND NOW())
怎麼能在這個TSQL完成在SQL Server?
是否有一種方法在TSQL查詢行的日期時間列的值是「現在減去(一定的時間)」來選擇時間範圍?查詢'Now'的日期時間列減去一定的時間?
例如在MySQL中我可以建立這個謂詞,如:
(EndTime BETWEEN NOW() - INTERVAL 2 DAY AND NOW())
怎麼能在這個TSQL完成在SQL Server?
您可以使用功能,例如功能。
where endtime between dateadd(day, -2, getdate()) and getdate()
由於柱endtime
不是函數參數,查詢優化器可以使用任何會在其上定義的任何索引(的sargable的定義)。
可以使用datediff功能。
例如,爲了找到最後五分鐘內創造的東西,你可以執行
select *
from Table t
where datediff(minute, t.CreationDate, getutcdate()) <= 5
雖然簡單,好像這種方法將無法利用索引信息(如果存在)。但是RDBMS優化對我來說是PFM。 – 2011-03-29 19:59:24
@pst - 你是對的,'datediff'不是[sargable](http://stackoverflow.com/questions/799584/what-makes-a-sql-statement-sargable/799616#799616)。 [Bobby D的答案](http://stackoverflow.com/questions/5477653/tsql-now-minus-a-certain-amount-of-time/5477688#5477688)更合適。 – 2011-03-29 20:10:18