Grazie. L'articolo è veramente ben fatto.
Purtroppo però non ho risolto il mio problema.
In effetti la MONTH(date) non funziona.

$sql="SELECT * FROM calendario
inner join spettacoli on idspettacoloe=idspettacolo
inner join stagioni on idstagionee=idstagione
where dataeora>=".$ini ." and dataeora<=".$fin. " order by MONTH(dataeora), spettacolo";

Se avete voglia di provare anche voi...