如何检查日期范围是否存在

时间:2015-05-15 09:44:39

标签: mysql sql select

正如你可能从标题中注意到的那样,我的问题很难表达,但有问题:

我有MySQL表和一些数据:

enter image description here

在注册表格中,我必须指定预约开始和结束时间。如何检查是否已经在指定时间内注册了预约。例如,我不能提出新的预订,从13:20开始,到15:00等结束。

2 个答案:

答案 0 :(得分:1)

如果您要创建的新预订的开头或结尾位于当前范围内,则应阻止预订。使用:reservationStart:reservationEnd作为这些日期,您可以查询:

SELECT *
FROM   reservations
WHERE  :reservationStart BETWEEN reservation_from AND reservation_to OR
       :reservationEnd BETWEEN reservation_from AND reservation_to OR

答案 1 :(得分:0)

使用反半连接,以下查询返回房间,可在预定的入住和退房范围内预订。它在Rails中。

关系

预订属于房间

房间有很多预订

查询

check_in_at ='2016-12-28'

check_out_at ='2016-12-29'

Room.where.not(“EXISTS(选择预订。*来自预订,其中rooms.id = bookings.room_id和bookings.check_in_at BETWEEN?AND?AND bookings.check_out_at BETWEEN?AND?)”,check_in_at,check_out_at,check_in_at ,check_out_at)