Проверка - это время в заданном c диапазоне времени - PullRequest
1 голос
/ 15 апреля 2020

Я хочу принять решение с CASE Statement в формате time. Но я не могу принять правильное решение с time форматами, потому что мое время окончания временного диапазона меньше, чем время начала. Позвольте мне объяснить с помощью кода:

DECLARE @Startdate datetime
DECLARE @START_TIME time(0)
DECLARE @END_TIME time(0)

SET @Startdate='2020-04-15 16:00:00.000'
SET @START_TIME='15:30:00'
SET @END_TIME='01:29:59'

select 
CASE WHEN CAST(@Startdate as time(0)) between @START_TIME and @END_TIME  THEN 1 ELSE 0 END

Также у меня есть таблица в БД, как показано ниже;

ID  START_TIME  END_TIME
1   05:30:00    15:29:59
2   15:30:00    01:29:59

Просто я хочу проверить время прихода datetime значение точно соответствует которому ID. Меня не волнует свидание. Как мне этого добиться?

Заранее спасибо.

1 Ответ

1 голос
/ 15 апреля 2020

Один метод:

select case 
    when 
        (
            @end_time >= @start_time 
            and cast(@startdate as time(0)) >= @start_time 
            and cast(@startdate as time(0)) <= @end_time  
        )
        or (
            @end_time < @start_time 
            and (
                   cast(@startdate as time(0)) >= @start_time 
                or cast(@startdate as time(0)) <= @end_time
            )
        )           
    then 1 
    else 0 
end
...