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

Ban*_*mar 0 sql sql-server stored-procedures

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

我有一张叫做的桌子myTable.我有一个列start_time(日期时间格式).

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
Run Code Online (Sandbox Code Playgroud)

我想按时间过滤结果.

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

但是,它不起作用.

Mic*_*zyn 8

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

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

请注意,将CAST函数应用于子句谓词中的start_timeWHERE将阻止该列有效使用的索引.除非指定其他标准,否则将需要全表扫描.