perche' time() rende un formato numerico con la conta dei secondi trascorsi dal 1-1-1970.

Year() e MONTH() estraggono anno e mese da un formato DATE/DATETIME cioe' yyyy-mm-dd hh:mm:ss e non da un formato unix timestamp.

dovresti usare FROM_UNIXTIME()
codice:
WHERE 
    FROM_UNIXTIME(tempo, '%m') = '$month' AND FROM_UNIXTIME(tempo, '%Y') = '$year'
trovi info qui: http://forum.html.it/forum/showthrea...hreadid=459634





@edit ... dimenticavo... siccome il valore del unix timestamp e' numerico sarebbe meglio usare un campo numerico tipo INT(10) UNSIGNED che occupa solo 4 byte con una gestione ottimizzata.