好的,所以我需要检索插入了前一个月的数据库表中的行。 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();
}
最佳答案
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 . '"');