【问题标题】:Fetch row which exist between date time range in codeigniter在codeigniter中获取日期时间范围之间存在的行
【发布时间】:2022-11-06 02:34:17
【问题描述】:

我的表中有这些行,数据库中有startend 列,例如这些数据类型为日期时间

     start                 |    end 
1    2022-10-27 11:59:00       2022-10-27 01:00:00
2    2022-10-28 01:59:00       2022-10-28 05:00:00
3    2022-11-22 11:59:00       2022-11-22 07:00:00
4    2022-11-25 01:59:00       2022-11-25 06:00:00

使用此查询检索位于给定日期时间组合之间的行数

$this->db->query("SELECT * FROM booking WHERE (TIMEDIFF('$start_time', TIME(start)) >=0 AND TIMEDIFF('$start_time', TIME(end)) <= 0) AND (TIMEDIFF('$end_time', TIME(start)) >=0 AND TIMEDIFF('$end_time', TIME(end)) <= 0) AND user_id=$user_id")->num_rows();

其中start_timeend_time 值就像

    $start_time=13:00:00
    $end_time=22:59:00

    $start_time=date('Y-m-d H:i:s', strtotime($fromDate.$start_time));
    $end_time=date('Y-m-d H:i:s', strtotime($toDate.$end_time));

也试过这个查询但没有用

select * from booking where (start between '2022-10-27 12:20:00' and '2022-10-27 14:50:00') AND (end between '2022-10-27 12:20:00' and '2022-10-27 14:50:00')

任何解决方案。谢谢

【问题讨论】:

  • 只是一个注释,但 BETWEEN 永远不会在这里工作,因为 BETWEEN 要求较低的数字(序数等)位于左侧。你的翻转开始/结束时间。

标签: mysql sql codeigniter codeigniter-3 codeigniter-2


【解决方案1】:

试试下面的查询,我希望你能得到你的结果。

select * from booking where start <= '2022-10-27 12:20:00' and  start >= '2022-10-27 14:50:00'AND end between '2022-10-27 12:20:00' and '2022-10-27 14:50:00')

【讨论】:

    【解决方案2】:

    尝试使用以下代码:

    SELECT *
    FROM booking
    WHERE start BETWEEN '2022-10-27 12:20:00'
                    AND '2022-10-27 14:50:00';
    

    【讨论】:

      【解决方案3】:

      试试下面的代码:

      public function dates()
      {
        $daterange = $this->input->get('daterange');
        $start_date = date('m/01/Y');
        $end_date =  date('m/31/Y');
         if ($daterange) {
            $daterange = explode('-',  $daterange);
            $start_date =  $daterange[0];
            $end_date =  $daterange[1];
         }
        $where['start_date'] = $start_date;
        $where['end_date'] = $end_date;
      }
      
      Model:
      if ($where['start_date']) {
        $this->db->where('date >=', date('Y-m-d', strtotime($where['start_date'])));***emphasized text***
      } 
      if ($where['end_date']) {enter code here
        $this->db->where('date <=',  date('Y-m-d', strtotime($where['end_date'])));
                  }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-25
        • 1970-01-01
        • 2014-02-09
        • 1970-01-01
        • 2016-07-23
        • 1970-01-01
        • 2022-11-02
        • 1970-01-01
        相关资源
        最近更新 更多