Hola.
En Firebird haría la consulta así.
Igual o próximo anterior:
Código SQL
[-]
SELECT FIRST 1 * FROM TABLA
WHERE FECHA <= :FECHA
ORDER BY FECHA DESC
Igual o próximo posterior:
Código SQL
[-]
SELECT FIRST 1 * FROM TABLA
WHERE FECHA >= :FECHA
ORDER BY FECHA
Por lo que indico
roman, creo que el equivalente en MS SQL Server del
FIRST 1 de Firebird, es
TOP 1, así que tendrías que hacer el reemplazo.
Saludos.