Più vicina a prescindere che sia antecedente o futura?
Rdbms utilizzato?
Visto che hai postato qui immagino stia parlando di sql server.
Dovrebbe essere una cosa del genere
codice:
select * from tabella where
datediff(day,dal,convert(datetime,'20/05/2007',103))
= (
select
min(abs(datediff(day,dal,convert(datetime,'20/05/2007',103)))) from tabella
)
In questo modo nel caso abbia più record con la stessa differenza di giorni minima ti verranno restituiti tutti a differenza di quanto otterresti con un top 1.