2011-03-29 19 views

cevap

15

dateadd işlevini, örn. Kolon endtime bir işlev parametresi olmadığı için

where endtime between dateadd(day, -2, getdate()) and getdate() 

, sorgu en iyi duruma üzerinde tanımlanabilir herhangi bir dizin (sargable tanımı) kullanabilir. bugünden itibaren iki gün çıkarmak çalışıyorsanız

3

Sen datediff işlevini kullanabilirsiniz yapabilirsiniz. (O var olup olmadığını)

Örneğin, son beş dakika içinde yaratılan şeyler bulmaya, bu yaklaşım bilgileri dizine yararlanmak mümkün olmaz gibi görünüyor, basit olmakla birlikte

select * 
from Table t 
where datediff(minute, t.CreationDate, getutcdate()) <= 5 
+1

yürütebilir. Ancak RDBMS optimizasyonları bana PFM. –

+0

@pst - haklısınız, 'tarih' değil [sargable] (http://stackoverflow.com/questions/799584/what-makes-a-sql-statement-sargable/799616#799616). [Bobby D'nin cevabı] (http://stackoverflow.com/questions/5477653/tsql-now-minus-a-certain-amount-of-time/5477688#5477688) daha uygundur. –

İlgili konular