data piu' vicina.... allora potrebbe essere prima oppure dopo oppure la stessa di quella indicata.

usa ABS().

codice:
select *, ABS(DATEDIFF(NOW(), data)) as diff
from calendario
order by diff
limit 1