Để xử lý các ngày có 0 bản ghi tương ứng, cách làm thông thường của tôi là sử dụng bảng lịch để kết hợp.
Ví dụ:tạo một bảng với một trường có tên là calendar_date
và điền nó vào mọi ngày kể từ 1st Jan 2000
đến 31st Dec 2070
hoặc một số phạm vi khác phù hợp với mục đích báo cáo của bạn.
Sau đó, sử dụng một cái gì đó như ...
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
Bảng này có thể có nhiều mục đích sử dụng bổ sung, chẳng hạn như gắn cờ các ngày lễ của ngân hàng, ngày bắt đầu của tuần và tháng. Với việc sử dụng cẩn thận các cờ và chỉ mục, bạn có thể tận dụng được nhiều điều từ nó.