我正在使用CodeIgniter,我希望获得以下问题的帮助。我提供了一些开始日期和结束日期,我想看看这些提供日期之间或之间的预订。
$startdate = '2016-05-23';
$enddate = '2016-05-27';
$this->$db->select('reservationid, startdate, enddate');
$this->$db->from('reservation');
$this->$db->where('startdate >=', $startdate);
$this->$db->where('enddate <=', $enddate);
$query = $this->$db->get()->result_array();
return $query;
Result = Array ( [0] => Array ( [reservationid] => KHAN2016Q224 [startdate] => 2016-05-23 [enddate] => 2016-05-27 ) )
以上查询返回上述结果。
但是当我提供
时$startdate = '2016-05-24';
$enddate = '2016-05-26';
然后它返回一个空数组。我希望在我在日期之间搜索时再次返回上述预定ID,因为这个日期有一些保留,我不希望它被排除。
答案 0 :(得分:0)
如果我理解正确,您希望退回任何有两个日期之间的预订,那么您可以编写自定义WHERE部分。
$startdate = '2016-05-23';
$enddate = '2016-05-27';
$this->$db->select('reservationid, startdate, enddate');
$this->$db->from('reservation');
$this->$db->where('(startdate BETWEEN "' . $startdate . '" AND "' . $enddate . '") OR (enddate BETWEEN "' . $startdate . '" AND "' . $enddate . '")');
$query = $this->$db->get()->result_array();
return $query;
当然,您需要正确转义$startdate
和$enddate
,或者通过从这些日期创建DateTime
课程来检查它们是否是正确的日期。