2009-04-15 8 views
0

J'essaie d'écrire une requête pour voir si un ingénieur a visité son travail dans un créneau horaire convenu.Time Slot SQL Query

Table Screenshot http://img24.imageshack.us/img24/1156/capturebcn.jpg

Ceci est ma requête à ce jour:

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] 

Le 'StartDate' et 'StartTime' est la date et l'heure de l'ingénieur est allé.

'BookedDate' est la date à laquelle il aurait dû aller, et 'TimeSlotStart' et 'TimeSlotEnd' définit la durée pendant laquelle il aurait dû commencer à travailler. J'ai donc besoin d'une colonne qui est une valeur True/False pour dire si elle est passée au bon moment ou non.

+0

Voulez-vous dire la date convenue ainsi que l'intervalle de temps convenu? –

Répondre

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

Pourquoi ne pas simplement:

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

?