Я предложил бы избежать строк и используя time
тип данных:
select * from [Client].[scheduler]
where [Scheduler_Date] = '20120616' and
(CONVERT(time,[time_from])>='11:00') and
(CONVERT(time,[time_to])<='13:06')
(Почему time_from
и time_to
не уже time
s?)
Я также скорректировал строку даты буквального использовать безопасный формат (YYyyMmDd)
С другой стороны, мне кажется, что вам может потребоваться найти любые графики, которые перекрываются (частично или полностью) с заданными конечными точками. Хитрость есть для переключения сравнения:
where [Scheduler_Date] = '20120616' and
(CONVERT(time,[time_from])<='13:06') and
(CONVERT(time,[time_to])>='11:00')
Эта новая статья WHERE
будет найти все строки, которые перекрывают 11: период времени 06, а не только тех, кто целиком содержится в нем: 00-13.
Итак, что случилось с вашим запросом? – praveen
Я не думаю, что вы можете применять '> =' или '<=' оператор для строковых значений, помещенных внутри кавычек, таких как ''11: 00'' – yogi
Вы можете использовать оператор <> со строковыми значениями, например WHERE CONVERT (VARCHAR , timeColumn, 108)> = '01: 01: 01 ', но лучший способ - между оператором – praveen