Pour gérer les dates avec 0 enregistrement correspondant, ma pratique habituelle consiste à utiliser une table de calendrier pour me joindre.
Par exemple, créez une table avec un champ appelé calendar_date
et remplissez-le avec chaque date à partir du 1st Jan 2000
au 31st Dec 2070
, ou une autre plage adaptée à vos besoins de création de rapports.
Ensuite, utilisez quelque chose comme...
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
Cette table peut avoir de nombreuses utilisations supplémentaires, telles que le marquage des jours fériés, des débuts de semaines et de mois. Avec une utilisation prudente des drapeaux et des index, vous pouvez en tirer beaucoup de profit.