检查日期范围与Access冲突

时间:2013-04-11 11:54:44

标签: sql date ms-access

我在编写查询时遇到问题,该查询会告诉我某辆车是否在指定的日期内被预订。我的表名为Bookings,其中包含CarIDStartDateEndDate列。如果汽车在用户输入的时间段内被预订,我想要返回一行。目前我有这个查询,我从互联网上得到了一些修修补补:

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作为汽车。但是,逻辑似乎不起作用。即使我确认日期中完全没有冲突,它总是返回行。

我如何修改此查询以使其有效?

由于

1 个答案:

答案 0 :(得分:1)

假设所有日期都不能为空,并且开始日期小于结束日期,则以下查询应列出与给定日期范围重叠的汽车7的所有预订:

SELECT *
FROM Bookings
WHERE CarID = 7
AND StartDate < user_end_date
AND EndDate > user_start_date
相关问题