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.