SQL je notoricky špatné při vracení dat, která nejsou v databázi. Můžete najít počáteční a koncové hodnoty pro mezery dat, ale získat všechna data je těžké.
Řešením je vytvořit kalendářovou tabulku s jedním záznamem pro každé datum a OUTER PŘIPOJIT ji k vašemu dotazu.
Zde je příklad za předpokladu, že created_at je typu DATE:
SELECT calendar_date, COUNT(`id`)
FROM calendar LEFT OUTER JOIN my_table ON calendar.calendar_date = my_table.created_at
GROUP BY calendar_date
(Hádám, že created_at je opravdu DATETIME, takže budete muset udělat trochu více gymnastiky, abyste se PŘIPOJILI ke stolům).