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

Php 如何从数据库中获取两个日期之间的值?,php,mysql,Php,Mysql,我正在创建一个酒店预订应用程序。如何获取两个日期之间的数据 这是我的控制器逻辑 public function GetMarriageDate(){ $frm = $this->input->post('from'); $to = $this->input->post('to'); $date=$this->db->query("SELECT * FROM `tbl_marriagebooking` WHERE (to_date BET

我正在创建一个酒店预订应用程序。如何获取两个日期之间的数据

这是我的控制器逻辑

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;

}
我的数据库表

我的问题是,如果有人在这种情况下选择2014-11-23中的日期to=2014-11-20,sql将返回或选择id=2,因为2014-11-24中的2014-11-20已预订。

试试看

$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'");

好的,那么您的预期结果是什么?我想如果用户日期介于预订日期之间,则返回1。1表示日期不可用。2014-11-23的前用户日期20214-11-21和2014-11-24的数据库2014-11-20中的预订日期我不知道预期结果是什么,但您是否尝试使用SQL CASE/THEN语句?可能有用。这是返回相同响应的查询。我想如果用户日期介于预订日期之间,则返回1。1表示日期不可用。
$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'");