2013-04-30 63 views
0
$today = mktime(0,0,0); 
$yesterday = $today - 86400; 
$this->view->numberyesterday=$db->fetchAll("SELECT * FROM `transactions` WHERE `siteid`=".$sid." AND `timestamp` > ".$db->quote($yesterday,'integer')." AND timestamp < ".$db->quote($today,'integer')); 

我已经使用上面的代码来显示昨天的所有记录。现在我需要为每个小时绘制图表。如何从上述查询中每小时检索一次记录(如12-1上午,1-2上午...... 23-24PM等内的记录)每小时查询MYSQL

谢谢!

编辑:

我希望我可以每个小时的记录存储在每个变量。所以24小时内会有24个变量。所以绘制图很容易。

回答

5

没有指定输出会是什么样子,但似乎这样的结构会帮助你:

select Hour(timestamp) transhour, count(*) transcount 
from transactions 
where yourfilters = yourvalues 
Group by Hour(timestamp) 

输出将是这样的:

transhour | transcount 
====================== 
0   | 2 
1   | 23 
2   | 45 
3   | 23 
...  | ... 
22  | 34 
23  | 3 

警告:如果没有交易是在给定的小时内完成的,输出将会在这个小时内省略(并且不会带回到零计数)

+0

谢谢您的回答。我希望我可以将每个小时的记录存储在每个变量中。所以24小时内会有24个变量。所以绘制图很容易。所以查询应该是这样的:$ this-> view-> numberyesterday = $ db-> fetchAll(“SELECT * FROM'transactions' where'siteid' =”。$ sid。“AND'timestamp'>”。$ db - >报价($昨天,'整数')。“和时间戳< ".$db->报价($ today,'integer')和小时BETWEEN(1,2)); – NewPHP 2013-04-30 04:09:05

+0

如何在没有记录时使值为零? – NewPHP 2013-04-30 04:18:02