【问题标题】:match whether the given start time and end time entered by the user exists匹配用户输入的给定开始时间和结束时间是否存在
【发布时间】:2019-07-17 06:30:39
【问题描述】:

我想匹配用户输入的给定开始时间和结束时间是否存在于数据库开始时间和结束时间之间,如果它在时间范围之间,那么只应显示那些存在于我使用的时间范围之间的记录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 到晚上 9:00 时,我得到所有三行都运行良好。

【问题讨论】:

    标签: mysql codeigniter codeigniter-3


    【解决方案1】:

    请在您的情况下使用 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();
    

    【讨论】:

    • @Jusin J:感谢您的回答,但当前情况是当我进入下午 5:00 - 7:30 时,我得到以下行,日程安排为下午 05:15 到下午 7:15,但是结果行的起始范围大于我输入的范围,即下午 5:00,因此它必须仅在我输入下午 5:00 时出现。下午 5:00 或以下
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    相关资源
    最近更新 更多