如何从数据库中获取两个日期之间的值?

问题描述:

我正在为酒店预订创建一个应用程序。我怎样才能获取两个日期之间的数据。如何从数据库中获取两个日期之间的值?

这是我的控制器逻辑。

public function GetMarriageDate(){ 

    $frm = $this->input->post('from'); 

    $to = $this->input->post('to'); 

    $date=$this->db->query("SELECT * FROM `tbl_marriagebooking` WHERE (to_date BETWEEN '$frm' AND $to')UNIONSELECT * FROM `tbl_marriagebooking` WHERE (from_date BETWEEN '$frm' AND to')"); 

    $count=$date->num_rows();return $count; 

} 

我的数据库table(tbl_marriageBooing)

id name  to_date  from_date 

1 name 1  2014-11-15 2014-11-18 

2 name 2  2014-11-20 2014-11-24 

3 name 3  2014-11-26  2014-11-30 

我的问题是,如果有一个人在这种情况下,SQL返回选择日期to=2014-11-202014-11-23或选择id = 2因为2014-11-242014-11-20被黄牌警告。

+0

好吧那么你有什么预期的结果? – Choco 2014-11-04 11:58:47

+0

你想要什么? – 2014-11-04 11:59:33

+0

我想要如果用户之间的日期之间的预订日期比他们返回1. 1意味着日期不可用。 ex 用户日期20214-11-21从2014-11-23 和预订日期在数据库中 2014-11-20来自2014-11-24 – Secure 2014-11-04 12:03:48

尝试

$frm = date('Y-m-d', strtotime($this->input->post('from'))); 
$to = date('Y-m-d', strtotime($this->input->post('to'))); 
$date=$this->db->query("SELECT * FROM tbl_marriagebooking WHERE DATE(to_date) >= '$to' AND DATE(from_date) <= '$frm'"); 

对于这两个日期精确匹配

$date=$this->db->query("SELECT * FROM tbl_marriagebooking WHERE DATE(to_date) = '$to' AND DATE(from_date) = '$frm'"); 
+0

这是查询返回相同的响应。我希望如果用户的日期在 之间预订日期比他们返回1. 1表示日期不可用。 – Secure 2014-11-04 12:02:54