2015-07-17 3 views
0

У меня есть следующий запрос, который ищет все записи где;DateAdd & DateDiff Together

  • ActualMinutes составляет 5 Больше или равен ScheduledMinutes и
  • ActualMinutes составляет 5 меньше или равен ScheduledMinutes.

E.g. Если ScheduledMinutes равно 60, мне нужен любой ActualMinutes между 55 & 65 (включительно).

SELECT * 
FROM 
    (
     SELECT top 10000 
     DateDiff(MI, StartTime, EndTime) as ScheduledMinutes, 
     DateDiff(MI, SignIn, SignOut) as ActualMinutes, 
     * 
     FROM tblRosteredCare 
     WHERE SignIn != 'M' AND SignOut != 'M' 
    ) DT 
WHERE DT.ActualMinutes <= DT.ScheduledMinutes 

Спасибо за любую помощь

ответ

2

Просто вычитать одно из другого и сделать сравнение:

SELECT * 
FROM 
    (
     SELECT top 10000 
     DateDiff(Minute, StartTime, EndTime) as ScheduledMinutes, 
     DateDiff(Minute, SignIn, SignOut) as ActualMinutes, 
     * 
     FROM tblRosteredCare 
     WHERE SignIn != 'M' AND SignOut != 'M' 
    ) DT 
WHERE DT.ActualMinutes - DT.ScheduledMinutes between -5 and 5 

Или быть мило и использовать ABS:

SELECT * 
FROM 
    (
     SELECT top 10000 
     DateDiff(Minute, StartTime, EndTime) as ScheduledMinutes, 
     DateDiff(Minute, SignIn, SignOut) as ActualMinutes, 
     * 
     FROM tblRosteredCare 
     WHERE SignIn != 'M' AND SignOut != 'M' 
    ) DT 
WHERE ABS(DT.ActualMinutes - DT.ScheduledMinutes) <= 5 
+0

Спасибо, что есть отлично работал –