时隙SQL查询

Mar*_*iff 0 sql t-sql sql-server sql-server-2005

我正在尝试编写一个查询,以查看工程师是否在约定的时间段内访问了他的工作.

表格截图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]
Run Code Online (Sandbox Code Playgroud)

'StartDate''StartTime'是工程师去的日期和时间.

'BookedDate'是他应该去的日期,'TimeSlotStart''TimeSlotEnd'定义了他应该已经开始工作的时间跨度.所以我需要一个True/False值的列来说明他是否进入了正确的时间.

gbn*_*gbn 5

SELECT
    CASE
        WHEN StartDate = BookedDate AND StartTime BETWEEN TimeSlotStart and TimeSlotEnd
            THEN 'True'
        ELSE 'False'
    END
FROM
    ...
Run Code Online (Sandbox Code Playgroud)