Om met datums om te gaan met 0 corresponderende records, is het mijn normale gewoonte om een kalendertabel te gebruiken om mee te doen.
Maak bijvoorbeeld een tabel met één veld genaamd calendar_date
en vul het in met elke datum vanaf 1st Jan 2000
tot 31st Dec 2070
, of een ander bereik dat geschikt is voor uw rapportagedoeleinden.
Gebruik dan iets als...
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
Deze tabel kan veel extra toepassingen hebben, zoals het markeren van feestdagen, begin van weken en maanden. Met verstandig gebruik van vlaggen en indexen kun je er veel uit halen.