Per gestire le date con 0 record corrispondenti, la mia pratica normale consiste nell'utilizzare una tabella del calendario a cui partecipare.
Ad esempio, crea una tabella con un campo chiamato calendar_date
e compilalo con ogni data dal 1st Jan 2000
al 31st Dec 2070
, o un altro intervallo adatto ai tuoi scopi di segnalazione.
Quindi usa qualcosa come...
SELECT
calendar.calendar_date,
COUNT(*)
FROM
calendar
LEFT JOIN
yourData
ON yourData.timeStamp >= calendar.calendar_date
AND yourData.timeStamp < calendar.calendar_date + 1
WHERE
calendar.calendar_date >= '01 Jan 2012'
AND calendar.calendar_date < '04 Jan 2012'
GROUP BY
calendar.calendar_date
Questa tabella può avere molti usi extra, come segnalare i giorni festivi, l'inizio di settimane e mesi. Con un uso prudente di flag e indici, puoi ricavarne molto.