检查MySQL中两列之间的时间

时间:2019-01-13 06:13:29

标签: php mysql sql

我有一个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';  

2 个答案:

答案 0 :(得分:0)

根据您的表结构,最好使用

SELECT * FROM booking 
WHERE CAST(CONCAT(date,' ',start_time)AS timestamp) 
BETWEEN '2012-08-30' AND '2012-08-31'; 

否则,最好将完整时间戳记用于start_time和end_time。

答案 1 :(得分:0)

如果我正确理解,您将需要在表中检出@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;