SQL-запрос временного интервала - PullRequest
0 голосов
/ 15 апреля 2009

Я пытаюсь написать запрос, чтобы узнать, посетил ли инженер свою работу в согласованный промежуток времени.

Снимок экрана таблицы http://img24.imageshack.us/img24/1156/capturebcn.jpg

Это мой запрос:

SELECT
  v.[VISITDATE], 
  CONVERT(VARCHAR, v.[STARTTIME], 105) AS 'Startdate', 
  CONVERT(VARCHAR, v.[STARTTIME], 108) AS 'StartTime', 
  CONVERT(VARCHAR, v.[bookeddate], 105) AS 'BookedDate', 
  CONVERT(VARCHAR, t.[starttime], 108) AS 'TimeSlotStart', 
  CONVERT(VARCHAR, t.[endtime], 108) AS 'TimeSlotEnd',
  v.[Status]        
FROM
  [tbl_repair_visit] v 
  INNER JOIN [ltbl_TimeSlots] t ON v.timeslot = t.[Slot]

'StartDate' и 'StartTime' - это дата и время, когда инженер ушел.

'BookedDate' - это дата, которую он должен был пройти, а 'TimeSlotStart' и 'TimeSlotEnd' определяют промежуток времени, в который он должен был начать работать. Поэтому мне нужен столбец, который имеет значение True / False, чтобы сказать, был ли он в правильное время или нет.

Ответы [ 2 ]

5 голосов
/ 15 апреля 2009
SELECT
    CASE
        WHEN StartDate = BookedDate AND StartTime BETWEEN TimeSlotStart and TimeSlotEnd
            THEN 'True'
        ELSE 'False'
    END
FROM
    ...
0 голосов
/ 15 апреля 2009

Почему бы просто:

WHERE Startdate = BookedDate AND StartTime <= TimeSlotEnd AND StartTime >= TimeSlotStart

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...