SQL,其中两个时间列之间的两个时间值

时间:2016-11-16 18:00:52

标签: 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)

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

EG。

SELECT * FROM Table
WHERE TIME('timeStampCol') BETWEEN '12:00:00' AND '18:00:00'