Najprostszym sposobem na znalezienie brakujących dat jest użycie tabeli kalendarza. Opublikowałem kod do tworzenia i wypełniania tabeli kalendarza dla PostgreSQL ; powinieneś być w stanie go dostosować bez żadnych problemów.
Po umieszczeniu tabeli kalendarza Twoje zapytanie jest dość proste i łatwe do zrozumienia. Aby znaleźć brakujące daty na październik 2011 r., użyjesz czegoś podobnego do tego. (Zgadywanie przy stole z "postami".)
select c.cal_date
from calendar c
left join posts p on (c.cal_date = p.date)
where p.date is null
and c.cal_date between '2011-10-01' and '2011-10-31'
and p.userid = 1
order by c.cal_date