create table T (date_time datetime)
insert into T
select convert(datetime,'2006-07-05 10:20:43')
union
select convert(datetime,'2006-07-05 11:50:41')
union
select convert(datetime,'2006-07-06 15:20:43')
union
select convert(datetime,'2006-07-07 16:00:00')
union
select convert(datetime,'2006-07-07 16:00:01')
declare @sdate datetime,@edate datetime
set @sdate=convert(datetime,' 10:00:00')
set @edate=convert(datetime,' 16:00:00')
select * from T
where convert(datetime,right(convert(char(20),date_time,120),10))
between @sdate and @edate
--楼上有问题,16点到17点的也会误选出
declare @t table
(
timecolumn datetime
)
insert into @t
select '2006-07-05 10:20:43' union all
select '2006-07-07 16:00:00' union all
select '2006-07-07 16:00:20'
select * from @t
where convert(varchar,timecolumn,108) between '10:00:00' and '16:00:00'