Я искал это решение, но без «жестко закодированной» даты, и я придумал эту, действительную на текущий год (помогло из этого ответов ).Обратите внимание, что
where year(date)=2011
не требуется, поскольку выбранные уже фильтруют дату.Также, таким образом, не имеет значения, какая таблица (по крайней мере, как указано до того, как таблица имеет по крайней мере 366 строк) использовалась, так как дата «вычисляется» во время выполнения.
select date from (
select
date_format(
adddate(MAKEDATE(year(now()),1), @num:=@num+1),
'%Y-%m-%d'
) date
from
your_table,
(select @num:=-1) num
limit
366 ) as dt