使用php和mysql检索上个月插入的值

时间:2014-05-30 15:14:55

标签: php mysql sql codeigniter

好的,所以我需要在数据库表中检索插入当前前一个月的行。 shop_orders是数据库。

订单日期或datetime的每一行都有一个o_date,用于确定输入日期。

我在codeigniter模型中提出了这个功能。代码中的第一部分确定上个月的第一天是什么,并放入存储在数据库中的相同格式。第二部分从数据库中检索信息。我只是不确定在where行中放置什么内容才能从上个月的第一天到上个月的最后一天检索结果。

以下代码的第一部分输出如下:

Today is: 2014/05/30 the first day of last month was: 2014/04/01 and the last day of last month was: 2014/04/30

我需要告诉第二块:

Select * from shop_orders where o_date is between 2014/04/01 and 2014/04/30

显然sql不正确,是什么?我真正的问题。

function get_last_month_order_count()
{
    $date = date('Y/m/d');
    $today = new DateTime( $date );
    $today->modify( 'first day of last month' );
    $firstDay = $today->format( 'Y/m/d' );
    $today = new DateTime( $date );
    $today->modify( 'last day of last month' );
    $lastDay = $today->format( 'Y/m/d' );

    $this->db->select('*');
    $this->db->from('shop_orders');
    $this->db->where('o_date', '');

    return $this->db->count_all_results();
}

1 个答案:

答案 0 :(得分:1)

SELECT * FROM shop_orders WHERE (date_field BETWEEN ' . $firstDay . ' AND ' . $lastDay . ');

或者你应该这样做:

$this->db->select('*');
$this->db->from('shop_orders');
$this->db->where('o_date >=', $first_date);
$this->db->where('o_date <=', $second_date);

或者你可以这样做:

$this->db->select('*');
$this->db->from('shop_orders');
$this->db->where('o_date BETWEEN "' . $first_date . '" AND "' . $second_date . '"');