2016-05-17 183 views
1

我使用的是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,因爲在這個日期有一些預訂,我不希望它排除。

+0

如果startdate是2016-05-21和結束日期2016-05-25或開始日期是2016-05-21和結束日期2016-05-28或開始日期是2016-05-25和結束日期是2016-05-28 ? – Vickel

回答

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類。