C'est comme ça que je fais. Il crée une plage de dates à partir du 2011-01-01 au 2011-12-31 :
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
La seule exigence est que le nombre de lignes dans any_table doit être supérieur ou égal à la taille de la plage nécessaire (>=365 lignes dans cet exemple). Vous l'utiliserez très probablement comme une sous-requête de votre requête entière, donc dans votre cas any_table peut être l'une des tables que vous utilisez dans cette requête.