【发布时间】:2016-07-19 21:07:48
【问题描述】:
我正在开发一个会议室预订系统,我无法确定是否在设定的时间范围内占用了一个房间,我正在使用当前的日期格式并将类型设置为 DATETIME 在表格中:@ 987654322@
这是我当前的代码:
//Function to check if a booking exists:
function bookingExist($DateStart, $DateEnd, $RoomNo) {
global $DB;
$sql = "SELECT * FROM bookings WHERE date_start = :dateStart AND date_end = :dateEnd AND room_no = :roomNo";
$Q = $DB->prepare($sql);
$Q->bindParam(':dateStart', $DateStart);
$Q->bindParam(':dateEnd', $DateEnd);
$Q->bindParam(':roomNo', $RoomNo);
$Q->execute();
if ($Q->rowCount()) {
//A record exists...
return true;
} else {
//no record exists
return false;
}
}
有没有办法在 sql 查询中做到这一点?
示例:房间 A 在 2016 年 3 月 31 日 15:00:00 和 2016 年 3 月 31 日 17:30:00 之间预订,然后用户尝试为 2016 年 3 月 31 日 16 日的房间 A 创建新预订: 30:00 - 2016-03-31 17:00:00 和 thsi 应该返回 1 记录,因为有预订
【问题讨论】:
-
房间是从日期和时间 A 到日期和时间 B。因此,如果您的新时间范围的开始或结束时间介于 A 和 B 之间。这就是您在 SQL 中所需要的吗?
-
@Renan 这里是一个例子:房间 A 是在 2016-03-31 15:00:00 和 2016-03-31 17:30:00 之间预订的,然后用户尝试为房间 A 为 2016-03-31 16:30:00 - 2016-03-31 17:00:00 并且应该返回 1 记录,因为有预订
-
查看我的更新答案。