【问题标题】:Checking for date range conflicts with Access使用 Access 检查日期范围冲突
【发布时间】:2013-04-11 11:54:43
【问题描述】:

我在编写查询时遇到问题,该查询会告诉我给定的汽车是否在指定的日期期间被预订。我的表名为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 用于汽车。但是,逻辑似乎不起作用。即使我确认日期中绝对没有冲突,它总是返回行。

如何修改此查询以使其正常工作?

谢谢

【问题讨论】:

    标签: sql date ms-access


    【解决方案1】:

    假设没有任何日期可以为空,并且开始日期小于结束日期,以下查询应列出与给定日期范围重叠的 7 号车的所有预订:

    SELECT *
    FROM Bookings
    WHERE CarID = 7
    AND StartDate < user_end_date
    AND EndDate > user_start_date
    

    【讨论】:

      猜你喜欢
      • 2011-02-12
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多