La sintassi l'ho provata e a me funziona (mysql 4.0.20).

A questo punto ti conviene fare 2 query, con la prima ti trovi la data del tuo id e con l'altra i due record precedente e successivo:

(SELECT *
FROM TABELLA
WHERE DATA <=$data AND ID<>$id
ORDER BY DATA DESC
LIMIT 1)
UNION
(SELECT *
FROM TABELLA
WHERE DATA >=$data AND ID<>$id
ORDER BY DATA
LIMIT 1)

Se hai mysql >= 4.1 puoi fare tutto con una sola query utilizzando le subqueries.