それはあなたの日付範囲がどれくらい大きいかに依存します。すべての日付が1か月以内の場合、たとえば、次のようになります。
select day(timestamp) as Day, hour(timestamp) as Hour, count(*) as Count
from MyTable
where timestamp between :date1 and :date2
group by day(timestamp), hour(timestamp)
データをさらに分離する必要がある場合は、年と月でグループ化することもできます。