我在编写一个查询时遇到问题,该查询将告诉我给定的汽车是否在指定的日期期间被预订。我的表被称为Bookings
并且有CarID
,StartDate
和EndDate
列。如果在用户输入的时间段内预订了汽车,我想返回一行。目前我有这个查询,我从互联网上得到了一些修补:
SELECT *
FROM Bookings
WHERE BookingID NOT IN
(SELECT BookingID
FROM Bookings
WHERE
(StartDate <= user_start_date AND EndDate >= user_start_date) OR
(StartDate <= user_end_date AND EndDate >= user_end_date) OR
(StartDate >= user_start_date AND EndDate <= user_end_date)) AND
(CarID = 7)
在这里,我使用user_start_date
用户的开始日期和用户user_end_date
的结束日期以及7
汽车。但是,逻辑似乎不起作用。即使我验证日期中绝对没有冲突,它总是返回行。
如何修改此查询以使其正常工作?
谢谢