Una tabella calendario ausiliaria funzionerà bene. La tabella del calendario più semplice possibile è una singola colonna di date.
create table calendar (
cal_date date primary key
);
È possibile utilizzare un foglio di calcolo o SQL per popolarlo. Un join esterno su di esso porterà le date che non esistono nei tuoi dati. Limita le autorizzazioni con GRANT e REVOKE e usa tutti i mezzi necessari per assicurarti che le date che ti aspetti di essere lì siano effettivamente lì. Eseguo un rapporto giornaliero sul mio server per verificare che ci siano "n" righe e verificare la prima e l'ultima data.
Su alcune piattaforme, puoi generare una serie di date al volo e utilizzarle direttamente o in un CTE. PostgreSQL ha funzioni per questo; Non so se MySQL lo fa. Non sono difficili da scrivere, però, se vuoi farne uno tuo.