Для SQL Server 2008 (что ОП пометил как вопрос) очевидный способ прост:
select *
from someTable t
where convert(time,t.dtColumn) between '18:00' and '20:00'
для любой версии SQL Server будет работать следующее
select *
from someTable t
where t.dtColumn between dateadd(hour,18,convert(datetime,convert(varchar,t.dtColumn,112),112))
and dateadd(hour,20,convert(datetime,convert(varchar,t.dtColumn,112),112))
Between
является инклюзивным тестом WRT как для нижней, так и для верхней границ тестируемого диапазона.Чтобы сделать тест эксклюзивным WRT для одной или другой границы, вам понадобится что-то вроде следующего:
select *
from someTable t
where convert(time,t.dtColumn) >= '18:00'
and convert(time,t.dtColumn) < '20:00'
или
select *
from someTable t
where t.dtColumn >= dateadd(hour,18,convert(datetime,convert(varchar,t.dtColumn,112),112))
and t.dtColumn < dateadd(hour,20,convert(datetime,convert(varchar,t.dtColumn,112),112))