在给定的时间段内按月对查询结果进行分组

时间:2012-01-07 19:38:13

标签: php mysql

我想在一段时间内每月出售一家网店 我正在使用unix epoch(time())在表格中存储销售日期

售出的表格看起来像这样

+-----------+---------------------+---------+----------+ 
| id        | product_id          | price   | date     |
+-----------+---------------------+---------+----------+
|         1 | 20                  |   2000  |1323299365| 
+-----------+---------------------+---------+----------+
|         2 | 28                  |   3500  |1323297389| 
+-----------+---------------------+---------+----------+

我希望找到一段时间内的月度销售,例如

$from="3/2011";
$to  ="4/2011";

我知道如何将这些日期更改为unix时间戳,并通过类似

的结果获得结果
//explode from
//$from = maketime(x,x,x,x,x);
//explode to
//$to= maketime(x,x,x,x,x);
$query = "select * from `sold_table` where date > $from and `date` < $to ";

但我想要的是按月对结果进行分组,这样我就可以获得每月静态   我知道这个查询不起作用,但我想要这样的东西

$query = "select sum(`price of each month`) from `sold_table` where date > $from and `date` < $to group by month ";

所以我可以得到像

这样的结果
march(03) = 25000$;
april(04) = 200$ ;

我可以每隔30天对结果进行分组,但我认为应该采用更清洁的方式

也许我可以找到介于1323299365和1323297389之间的月份,然后获得每月的每月销售额?但我不知道在两个纪元时间之间提取月份

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

SELECT SUM(price), DATE_FORMAT(FROM_UNIXTIME(date), "%m") AS month FROM sold_table GROUP BY month

但是也要注意今年,你可以使用月份和年份的组合。