Det beror på hur stort ditt datumintervall är. Om alla datum faller inom en månad, t.ex. kan du göra så här:
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)
Du kan också gruppera efter år och månad om du behöver separera dina data ytterligare.