2012-01-07 64 views
0

嗨即時通訊設法獲得一個給定時間段的網上商店月銷售 我使用unix時代(時間())在表中存儲銷售日期在給定的時間段內按月分組查詢結果

賣表看起來像這樣

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

我想findout每月出售的給定時間內像

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

我知道如何改變這些日期到UNIX timestam p和由像得到的結果是

//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,然後得到每個月的月銷售?但我不知道豪兩個時代之間的時間每月提取

+0

似乎沒有直接從Unix時間戳中提取月份等日期部分的方法。所以你需要做兩件事:1)從Unix時間戳轉換,2)提取日期分組的必要部分。做後者的一種方式就像在Peter Krejci的答案中一樣,替代方法可以在這裏找到:[MySQL查詢GROUP BY日/月/年](http://stackoverflow.com/questions/508791/mysql-query-group-by -日月年)。 – 2012-01-07 20:34:10

回答

1

嘗試這樣:

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

但要知道也是這一年,你可以使用年月的組合。