The way I do it is to create a temporary table with all the date ranges in it, left join from it to the data set, and select everything where the corresponding fields are null:
select singledate from datetable dt left join salestable st on (dt.date=st.date) where dt.date between '2005-05-01' and '2005-05-31' and st.somefield IS NULL