ordina prima per data (intesa come giorno mese anno) decrescente (il giorno più vicino) e poi per ora (intesa come ora minuto) crescente (il primo messaggio del giorno) con una cosa di questo tipo:
ORDER BY DATE_FORMAT(date, '%Y-%m-%d') DESC, DATE_FORMAT(date, '%H-%i') ASC LIMIT 1