【发布时间】:2015-06-28 11:05:00
【问题描述】:
我需要在指定月份的一天内获取“grand_total”的订单总数、SUM、MIN MAX 和 AVG。这就是我正在做的。
$collection->getSelect()
->columns( 'SUM(base_grand_total) AS total' )
->columns( 'COUNT(*) AS orders_count' )
->columns( 'DATE_FORMAT(created_at, "%d") AS order_day' )
->columns( 'DATE_FORMAT(created_at, "%d/%m/%y") AS order_date' )
->columns( 'AVG(base_grand_total) AS avg_total' )
->columns( 'MAX(base_grand_total) AS max_total' )
->columns( 'MIN(base_grand_total) AS min_total' )
->where( 'DATE_FORMAT(created_at, "%m") = ?', $month )
->where( 'DATE_FORMAT(created_at, "%Y") = ?', $year )
->group( 'DATE_FORMAT(created_at, "%d-%m-%y")' );
$month 是“Sep”,$year 是“2014”
上面的查询说 26 日有 3 个订单,但 magento 的销售 > 订单网格显示 26 日只有一个订单。我想答案就在里面, “created_at”在 DB 中存储为“2014-09-04 02:50:04”,但如果我们将其格式化为“Sep 3, 2014 4:50:04 PM”。 p>
那么,任何人都可以建议如何在 Collection 上应用按日期分组的子句。
提前致谢。
【问题讨论】:
-
听起来像是时区问题。
-
@rick 是的,知道如何解决这个问题吗?
-
SHOW VARIABLES LIKE '%zone';并研究它向您显示的两个设置。找出操作系统的设置。 Magento 做了什么。
标签: php mysql magento group-by