【问题标题】:Check If A Particular Date Is Not Overlapping Any Range In A Table检查特定日期是否与表中的任何范围不重叠
【发布时间】:2014-12-19 18:23:10
【问题描述】:

我正在创建一个酒店预订应用程序,我希望用户检查特定日期范围是否可用,例如:

BookingID | StartingDate | EndDate
    1     | 01/01/2014   | 10/01/2014
    2     | 15/01/2014   | 20/01/2014

假设这些是我的预订表的记录。现在,用户想要检查这个日期范围:

(假设酒店只有一个房间)

StartingDate = 11/01/2014
EndDate      = 19/01/2014

如您所见,此日期范围从 15/01 到 20/01 不可用。

如何检查日期范围是否与现有记录中的任何日期范围不重叠?

【问题讨论】:

    标签: mysql date


    【解决方案1】:

    简单查询:

    SELECT COUNT(BookingID) 
    FROM foo f 
    WHERE f.StartingDate < to_date('19/01/2014') AND f.EndDate > to_date('11/01/2014');
    

    【讨论】:

      【解决方案2】:

      你可以使用这个逻辑:

      select count(*) as NumOverlappingRecords
      from booking b
      where @StartingDate <= b.EndDate and
            @EndDate >= b.startingDate;
      

      您希望 NumOverlappingRecords 成为 0 以免发生冲突。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多