Mira, lo he puesto así:
No comprendo el diasfaltan. No sé de dónde viene ese campo.
Uso campo DATE normal yyyy-mm-dd y mi version de mysql es 5.0.51a
Código PHP:
$result2 = mysql_query("SELECT *, DATEDIFF(fecha, CURDATE()) diasfaltan FROM horarios WHERE CURDATE() BETWEEN DATE_SUB(fecha, INTERVAL 7 DAY) AND fecha ORDER BY fecha, diasfaltan");
$busqueda = mysql_fetch_array($result2);