date puede ser una palabra reservada de MySQL, lo que te recomendaria es usar otro nombre para tu campo....
lo otro seria, tu campo para la fecha es de tipo DATE o DATETIME? si es este ultimo no tienes necesidad de agregar mas nada en el order porque DATETIME agregar Año,Mes,Dia Hora,Minutos,Segundos....
segun tengo entendido para la consulta que tienes seria algo como:
Código PHP:
SELECT titulo,noticia,imagen,imgalt FROM noticias WHERE date<='$fecha' ORDER BY date,ID DESC