codeigniter:使用php在mysql中的两个日期之间获取数据

时间:2015-04-11 06:16:08

标签: php mysql codeigniter

我想在mysql中的两个日期之间检索数据。

从日期开始:01/04/2015 到目前为止:01/05/2015

但是我不能在单个变量中得到这些日期;

我如何得到如下所述:

$fdate=01;
$fmonth=04;
$tdate=01;
$tmonth=05;
$year=2015;

我在模型中的代码:

function date_range($fdate,$fmonth,$tdate,$tmonth,$year)
        {
            $this->db->select('*');
            $this->db->where('DAY(order_date) >=',$fdate);
            $this->db->where('MONTH(order_date) >=',$fmonth);
            $this->db->where('YEAR(order_date) >=',$year);
            $this->db->where('DAY(order_date) <=',$tdate);
            $this->db->where('MONTH(order_date) <=',$tmonth);
            $this->db->where('YEAR(order_date) <=',$year);
            return $this->db->get('orders');
        }

有时候它会正确地返回结果,有时它不会返回结果,但我在提到的两个日期之间的mysql中有一个数据。

我对这段代码犯了什么错误请帮帮我

4 个答案:

答案 0 :(得分:6)

你可以使用

$this->db->where("YOUR COLUMN BETWEEN DATE_FORMAT(COLUMN1,'%d/%m/%Y') AND DATE_FORMAT(COLUMN2,'%d/%m/%Y'"));

答案 1 :(得分:4)

这应该这样做:

function date_range($fdate,$fmonth,$tdate,$tmonth,$year)
        {
            $this->db->select('*');
            $this->db->where('order_date <=',date('Y-m-d',mktime(0,0,0,$fmonth,$fdate,$year)))
            $this->db->where('order_date >=',date('Y-m-d',mktime(0,0,0,$tmonth,$tdate,$year)))
            return $this->db->get('orders');
        }

答案 2 :(得分:3)

您可以使用CodeIgniter:

$query = $this->db->query("YOUR QUERY");

您的"Your QUERY"将包含mysql DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')

例如使用Query Binding

sql = "SELECT * FROM some_table 
       WHERE order_date between  DATE_FORMAT(? ? ?,'%d %m %Y') 
                             AND DATE_FORMAT(? ? ?,'%d %m %Y')"; 

$this->db->query($sql, array($fdate, $fmonth, year, $tdate, $tmonth, year));

答案 3 :(得分:0)

public function get_between_dates($date_from, $date_to)
{
    $this->db->where('order_date >=', $date_from);
    $this->db->where('order_date <=', $date_to);
    return $this->db->get()->result();
}

这是您如何获取两个日期之间的数据的方法。将表单输入分别命名为date_fromdate_to