2013-04-30 4 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-запрос на каждый час

Спасибо!

Edit:

Я хотел бы хранить записи каждого часа в каждой переменной. Так что в течение 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' transaction' WHERE 'siteid' =". $ Sid. "AND' timestamp'> ". $ Db -> quote ($ вчера, 'integer'). "AND timestamp < ".$db-> quote ($ today, 'integer') AND hour BETWEEN (1,2)); – NewPHP

+0

Как я могу сделать значения равными нулю, когда нет записей ? – NewPHP

Смежные вопросы