Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查MySQL中两列之间的时间_Php_Mysql_Sql - Fatal编程技术网

Php 检查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表之前,我想检查日期和时间是否已预订。 我该怎么做

我有一张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
表之前,我想检查日期和时间是否已预订。 我该怎么做

我尝试了以下代码:

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.开始时间和
@开始时间
这些日期和时间列的数据类型是什么?通过将日期和时间存储为单个实体,您可以省去很多麻烦