Предполагая, что время начала и время окончания являются значениями времени в вашей таблице, вы можете использовать следующее:
DECLARE
@timenow TIME
-- Get the current time
SELECT @timenow = CONVERT(TIME, GETDATE())
SELECT *
FROM temp
-- This clause handles the case where the shifts don't go past midnight
WHERE ((endtime > starttime) AND (@timenow BETWEEN starttime AND endtime))
-- This clause handles the case where the shifts do go past midnight
OR ((endtime < starttime) AND (@timenow >= starttime OR @timenow <= endtime))
Если ваши значения не хранятся с типом данных Time
, вы можете преобразовать их следующим образом:
CONVERT(TIME, starttime)
Обновление
Чтобы сделать это в своем коде, вам нужно изменить следующую строку:
If tNow > stTime And tNow < edTime Then
для соответствия логике в sql:
If tNow >= stTime OrElse tNow <= edTime Then
Это делает код:
Dim tNow As String
Dim stTime As String
Dim edTime As String
tNow = Format(Date.Now, "hh:mm tt")
stTime = Format(ds.Tables("shiftdetails").Rows(0).Item("starttime"), "hh:mm tt")
edTime = Format(ds.Tables("shiftdetails").Rows(0).Item("endtime"), "hh:mm tt")
If stTime < edTime Then
If tNow >= stTime OrElse tNow <= edTime Then
bShift = True
End If
Else
If tNow >= stTime And tNow <= edTime Then
bShift = True
End If
End If