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