首页 > 解决方案 > 检查MySQL中两列之间的时间

问题描述

我有一个 MySQL 表,booking

id   shop_id    date                start_time      end_time    
1    21         2019-1-13           09:00           10:00           
2    21         2019-1-13           11:00           11:30

现在,在我将记录插入booking表之前,我想检查日期和时间是否已经预订。我怎样才能做到这一点?

我尝试使用以下代码:

SELECT * FROM booking 
WHERE CAST(start_time as date) BETWEEN 
'2012-08-30' AND '2012-08-31';  

标签: phpmysqlsql

解决方案


如果我理解正确,您将拥有单独的 、 和 值@date@start_time并且@end_time您想在表格中检查这些值。

要返回所有重叠:

SELECT b.*
FROM booking b
WHERE @date = b.date AND
      @end_time >= b.start_time AND
      @start_time < b.end_time;

推荐阅读