我想匹配用户输入的给定开始时间和结束时间是否在数据库开始时间和结束时间之间(如果它在时间范围之间),那么仅应显示那些在我使用的时间间隔之间存在的记录between子句,但不起作用。
数据库值
开始|结束
2019-07-27 17:15:00 2019-07-27 19:15:00
2019-07-27 13:15:00 2019-07-27 14:15:00
2019-07-27 06:15:00 2019-07-27 10:15:00
我尝试过的是:
$start_time='2019-07-14 18:00:00';
$end_time='2019-07-14 19:00:00';
$start_time = date('H:i:s',strtotime($start_time));
$end_time = date('H:i:s',strtotime($end_time));
$results=$this->db->query('SELECT * FROM schedule_diary WHERE (TIME(start) BETWEEN time("'.$start_time.'") AND time("'.$end_time.'") AND TIME(end) BETWEEN time("'.$start_time.'") AND time("'.$end_time.'"))')->result_array();
我得到的结果是:
当我输入6:00 PM-7:00 PM时,我没有任何记录,但是应该返回记录,因为只有一行 在17:15:00到19:15:00之间,当我输入6:00 AM到9:00 PM时,我得到所有三行,它们工作正常。
答案 0 :(得分:0)
在您的情况下,请使用OR而不是AND
$results=$this->db->query('SELECT * FROM schedule_diary WHERE (TIME(start) BETWEEN time("'.$start_time.'") AND time("'.$end_time.'") OR TIME(end) BETWEEN time("'.$start_time.'") AND time("'.$end_time.'"))')->result_array();