difatti il tuo timestamp unix 1096980737 e':

from_unixtime(unixtime)
2004-10-05 14:52:17

Secondo te, questa data e' piu' recente o piu'passata di (oggi - tre mesi)????

Forse c'e' confusione sui termini

oggi = 2004-10-05
oggi - 3 mesi = 2004-07-05

quindi la query cerca le date uguali o antecedenti il 5 luglio 2004.

Se invece volevi dire le date a partire da tre mesi fa a questa parte, basta invertire minore con maggiore.... ma ti dara' tutte le date, anche quelle future se non poni anche il limite superiore.

SELECT * from tabella
where FROM_UNIXTIME(data) >= NOW() - INTERVAL 3 MONTH