Cytuję bezpośrednio dokumentację PHP tutaj:
Używając UPDATE, MySQL nie zaktualizuje kolumn, w których nowa wartość jest taka sama jak stara. Stwarza to możliwość, że mysql_affected_rows() może w rzeczywistości nie być równa liczbie dopasowanych wierszy, a jedynie liczbie wierszy, na które zapytanie miało dosłownie wpływ.
Tak więc w twoim przypadku mysql_affected_rows() zwróci 0, gdy UNIX_TIMESTAMP() zwróci tę samą wartość (na przykład dwa żądania od tego samego klienta w tej samej sekundzie).