Mysql SQL,其中两个时间列之间有两个时间值

Mysql SQL,其中两个时间列之间有两个时间值,mysql,sql,date,time,Mysql,Sql,Date,Time,使用MySQL,我需要找到两个值位于两列之间的行 例如,我正在创建一个从“15:00”到“18:00”的计划,但查询必须验证是否有任何行正在使用期间。如果有从“14:00”到“18:30”的记录,我需要将其返回以进行验证 我试过类似的方法,但不起作用: select * from availabilities where (('15:00' or '18:00') between start_hour and end_hour) 有什么想法吗?您可以使用TIME()函数提取datatime/t

使用MySQL,我需要找到两个值位于两列之间的行

例如,我正在创建一个从“15:00”到“18:00”的计划,但查询必须验证是否有任何行正在使用期间。如果有从“14:00”到“18:30”的记录,我需要将其返回以进行验证

我试过类似的方法,但不起作用:

select * from availabilities where (('15:00' or '18:00') between start_hour and end_hour)
有什么想法吗?

您可以使用
TIME()
函数提取datatime/timestamp列的时间部分

例如

这基本上是一个“测试范围是否与另一个范围重叠”的问题。只要开始时间小于结束时间,以下查询就可以工作:

SELECT *
FROM availabilities
WHERE '18:00' > start_hour AND end_hour > '15:00'

如果开始时间大于结束时间,必须执行什么操作。
SELECT *
FROM availabilities
WHERE '18:00' > start_hour AND end_hour > '15:00'