CodeIgniter记录两个日期之间的选择

时间:2016-05-17 19:27:06

标签: php mysql codeigniter

我正在使用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,因为这个日期有一些保留,我不希望它被排除。

1 个答案:

答案 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课程来检查它们是否是正确的日期。