时隙SQL查询

时间:2009-04-15 09:34:04

标签: sql sql-server sql-server-2005 tsql

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

Table Screenshot 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 个答案:

答案 0 :(得分:5)

SELECT
    CASE
        WHEN StartDate = BookedDate AND StartTime BETWEEN TimeSlotStart and TimeSlotEnd
            THEN 'True'
        ELSE 'False'
    END
FROM
    ...

答案 1 :(得分:0)

为什么不简单:

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