É assim que eu faço. Ele cria um intervalo de datas de 2011-01-01 até 31/12/2011 :
select
date_format(
adddate('2011-1-1', @num:[email protected]+1),
'%Y-%m-%d'
) date
from
any_table,
(select @num:=-1) num
limit
365
-- use limit 366 for leap years if you're putting this in production
O único requisito é que o número de linhas em any_table deve ser maior ou igual ao tamanho do intervalo necessário (>=365 linhas neste exemplo). Você provavelmente usará isso como uma subconsulta de toda a sua consulta, portanto, no seu caso, qualquer_tabela pode ser uma das tabelas que você usa nessa consulta.