2013-07-30 4 views
0

나는 datetime 열과 전달 된 인수가 열의 datetime에 대한 차이점을 확인하는 저장 프로 시저를 가지고 있습니다.SQL 검사 날짜 시간 차이

기본적으로 5 분 이상 차이를 반환하고 싶습니다.

예를 들어, 나는 다음과 같은 테이블이 있습니다 전달 된 인수는, 예를 들어, 경우 "2013년 7월 20일 10시 2분 0초", 반환 값은해야

ID | Date 
---------- 
1 | 2013-07-20 10:00:00 
2 | 2013-07-20 11:00:00 
3 | 2013-07-20 10:01:00 
4 | 2013-07-20 10:03:00 

1 
3 
4 

그들은 모두 전달 된 인수보다 5 분 미만이거나 더 큰 범위에 있기 때문입니다.

이제 문제는 무엇입니까?

+4

RTFM : http://msdn.microsoft.com/en-us/library/ms189794.aspx'사용하여 응답에 대응 –

+0

Abs()'를 DateDiff()와 함께 사용하면 옵티마이 저가'[Date]'필드의 인덱스를 사용할 수 없게됩니다. 단지 그것의 재미를 위해 – gvee

+0

: (FLOAT AS 캐스트 (GETDATE() DATETIME AS) + 0.003472222222) 'SELECT GETDATE(), \t 캐스트, FLOAT AS \t 캐스트 (주물 (GETDATE()) - 0.003472222222 DATETIME AS) ' – SQLMason

답변

3
DECLARE @date datetime = '2013-07-20 10:02:00'; 

SELECT id 
FROM your_table 
WHERE date_field >= DateAdd(mi, -5, @date) 
AND date_field < DateAdd(mi, +5, @date); 
+0

다른 답변에서 사용 된 날짜 계산은 정확한 5 분을 제공하지 않으므로이 답변에 +1합니다. 거대한 테이블에서도 더 빠르게 수행됩니다. –