En fait, c'est plus une question de français que de SQL
Ce qu'il faut voir, c'est que la date future la plus proche, c'est tout simplement la première des dates supérieures, triées par ordre croissant
SELECT *
FROM la_table
ORDER BY la_date ASC
LIMIT 1
Bon, si tu veux juste la date future la plus proche et pas la ligne complète qui la contient, la solution du :
SELECT MIN(la_date) FROM la_table WHERE la_date > date_reference
est surement plus efficace