2011-03-29 12 views

Respuesta

15

Utilizaría la función dateadd, p.

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

Debido a que la columna endtime no es un parámetro de función, el optimizador de consultas puede utilizar cualquier índices que podrían ser definidas en él (la definición de sargable).

2

Si usted está tratando de restar dos días a partir de hoy, se puede hacer

DateAdd(d, -2, CURRENT_TIMESTAMP) 

DATEADD (Transact-SQL)

3

Usted puede utilizar la función datediff.

Por ejemplo, para encontrar las cosas creadas en los últimos cinco minutos, se puede ejecutar

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

Aunque simple, parece que este enfoque no sería capaz de tomar ventaja de la información de índice (si existiera). Pero las optimizaciones de RDBMS son PFM para mí. –

+0

@pst - tiene razón, 'datediff' no es [sargable] (http://stackoverflow.com/questions/799584/what-makes-a-sql-statement-sargable/799616#799616). [La respuesta de Bobby D] (http://stackoverflow.com/questions/5477653/tsql-now-minus-a-certain-amount-of-time/5477688#5477688) es más apropiada. –

Cuestiones relacionadas