我正在使用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
但是,它不起作用。
答案 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