mysql之间但不相等

时间:2018-02-27 10:32:05

标签: mysql

我有一个返回两个日期之间的值的查询。问题是,即使值相等,它也会返回结果。这是我的查询

$stmt=$dbh->prepare("Select * FROM tbl_rezervari tr 

                where (:start BETWEEN tr.start AND tr.end or :end BETWEEN tr.start AND tr.end)"); 

                $stmt->bindParam(":start",$startDate);
                $stmt->bindParam(":end",$endDate);
                $stmt->execute();

3 个答案:

答案 0 :(得分:1)

BETWEEN是一系列值(https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_between)。

如果您不希望将值包含在范围内,则可能需要长时间进行操作...

$stmt=$dbh->prepare("Select * FROM tbl_rezervari tr 
         where ((:start > tr.start AND :start < tr.end) 
             or (:end > tr.start AND :end < tr.end))"); 

答案 1 :(得分:0)

呀。介于和之间[a,b]包括a和b。

因此,如果你想要排除a或b,只需减去1天。

答案 2 :(得分:0)

如前所述 - between运营商具有包容性,因此包含范围内的开始日期和结束日期 - 但您可以将查询修改为adddatesubdate,如下所示

$stmt=$dbh->prepare("select * from tbl_rezervari tr
    where ( 
    :start between adddate( tr.start, interval 1 day ) and subdate( tr.end, interval 1 day ) 
    or 
    :end between adddate( tr.start, interval 1 day ) and subdate( tr.end, interval 1 day ) 
    )");