Php 检查MySQL中两列之间的时间
我有一张MySQL表,Php 检查MySQL中两列之间的时间,php,mysql,sql,Php,Mysql,Sql,我有一张MySQL表,预订: 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表之前,我想检查日期和时间是否已预订。 我该怎么做
预订
:
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';
根据您的表格结构,最好使用
SELECT * FROM booking
WHERE CAST(CONCAT(date,' ',start_time)AS timestamp)
BETWEEN '2012-08-30' AND '2012-08-31';
否则,最好对开始时间和结束时间都使用完整的时间戳 如果我理解正确,您将在表中分别检查
@date
、@start\u time
和@end\u time
的值
要返回所有重叠,请执行以下操作:
SELECT b.*
FROM booking b
WHERE @date = b.date AND
@end_time >= b.start_time AND
@start_time < b.end_time;
选择b*
预订b
其中@date=b.日期和
@结束时间>=b.开始时间和
@开始时间
这些日期和时间列的数据类型是什么?通过将日期和时间存储为单个实体,您可以省去很多麻烦