Php Mysql位于两个时间域之间,包括下一天

Php Mysql位于两个时间域之间,包括下一天,php,mysql,pdo,between,Php,Mysql,Pdo,Between,我想选择两个时间域之间的行。 这很好用 $hour = date('H:i'); $time = " AND ( ( time1 IS NULL AND time2 IS NULL ) OR ( '$hour' BETWEEN time1 AND time2 ) ) "; 但我的问题是,调用必须在time1也可以大于time2的查询上工作 like time1=18:00:00 and time2=02:00:00 在这种情况下,查询也必须匹配,例如01:00:00 有没有一种方法可以直

我想选择两个时间域之间的行。 这很好用

$hour = date('H:i');
$time = " AND ( ( time1 IS NULL AND time2 IS NULL ) OR ( '$hour'  BETWEEN  time1 AND time2 ) ) ";
但我的问题是,调用必须在time1也可以大于time2的查询上工作

like time1=18:00:00 and time2=02:00:00
在这种情况下,查询也必须匹配,例如01:00:00


有没有一种方法可以直接在sql(而不是PHP)中执行此操作?

首先,我认为在应用程序代码中获取时间,然后与数据库中的值进行比较不是一个好主意。MySQL提供了许多操作日期时间的函数

我认为你想要的逻辑是:

AND ((time1 < time2 and '$hour' BETWEEN time1 AND time2) or
     (time1 > time2 and '$hour' NOT BETWEEN time1 and time2)
    )
和((time1time2和“$hour”不在time1和time2之间)
)

< /代码>为什么不将一天添加到时间2?因为你需要考虑日间休息,你需要比较日期,而不仅仅是时间。不能一天一次地添加,因为行包含每周更新折扣价格的规则。另一个字段包含“一周中的几天”,您不需要将该天添加到表的内容中,只需将其临时添加到查询中即可。请尝试
$hour BETWEEN DATE\u ADD(时间1,间隔1天),时间2
谢谢。我只是碰巧。。。第二排是“在时间2和时间1之间”,它工作得很完美。