在DateTime SQL列中按时间搜索(仅)

时间:2019-01-30 11:31:27

标签: sql sql-server stored-procedures

我正在使用SQL Server和PHP并正在使用存储过程。

我有一个名为myTable的表。我有一列start_time(DateTime格式)。

start_time
-----------------------
2019-05-23 12:20:22.000
2019-08-02 01:21:02.000
2019-02-10 22:32:17.000
2019-08-14 04:56:24.000

我只想按时间过滤结果。

  

例如: BETWEEN 22:20:10.000 AND 04:56:24.000

但是,它不起作用。

2 个答案:

答案 0 :(得分:7)

简单转换为time数据类型将起作用:

select * from myTable
where cast(start_time as time) >= '22:00:00.000'
   or cast(start_time as time) <= '04:00:00.000'

请注意,在CAST子句谓词中的start_time列上应用WHERE函数将阻止该列的索引被有效使用。除非指定其他条件,否则将需要进行全表扫描。

答案 1 :(得分:1)

此代码可以使用,请检查

create table #temp
(
[Date] datetime
 )


insert into #temp  values ('2019-05-23 12:20:22.000')
insert into #temp  values ('2019-08-02 01:21:02.000')
insert into #temp values ('2019-02-10 22:32:17.000')
insert into  #temp  values  ('2019-08-14 04:56:24.000')

 select cast([Date] as date) as [Date],convert(char(15), [Date], 108) [Time]  
 from #temp
 where convert(char(15), [Date], 108) between '04:56:24' and '22:32:17'

 Drop table #temp

enter image description here