To zależy od tego, jak duży jest Twój zakres dat. Jeśli wszystkie daty przypadają w ciągu miesiąca, na przykład, możesz to zrobić:
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)
Możesz również pogrupować według roku i miesiąca, jeśli potrzebujesz dalej oddzielić swoje dane.