代码之家  ›  专栏  ›  技术社区  ›  zlee

使用mysql for date overlap进行预订

  •  0
  • zlee  · 技术社区  · 7 年前

    我正在使用mysql BETWEEN

    这是我的测试数据库

    booking_id |venue_id |startdate   | enddate
    1001       |3        | 2017-07-21 |2017-07-23
    

    SELECT * FROM `booking` WHERE ('user_inputdate_1' BETWEEN startdate AND enddate) OR ('user_inputdate_2' BETWEEN startdate AND enddate)'
    

    我的测试结果

    user_inputdate_1  user_inputdate_2  Result 
    2017-07-19        2017-07-23         true 
    2017-07-22        2017-07-24         true 
    2017-07-21        2017-07-24         true 
    2017-07-20        2017-07-24         false => this is the problem (it should be true)
    

    附言:如果有任何其他方法来解决这个问题,我会接受他们。我一直在尝试很多问题,但它们对我不起作用。

    最后,谢谢你的努力。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Mayank Pandeyz    7 年前

    对于给定的输入日期:

    2017-07-20 2017-07-24

    也不 start date 大于或等于 2017-07-21 end date 2017-07-23 .这就是结果的原因 false

    因此 between

    WHERE 'user_inputdate_1' <= `enddate`
    OR 'user_inputdate_2' => `startdate`;
    

    编辑:缺失等于 = 签名