Prova così
Al posto di 1000 metti un numero sufficientemente grande da contenere tutte le notizie vecchie.codice:(select * from tabella where campo_data >= curdate() order by campo_data asc) union (select * from tabella where campo_data < curdate() order by campo_data desc limit 0,1000)