Hi Hayden,
there is three ways to deal with your problem
Option 1) Your sales table is inner joined with time dimension table so you are not getting dates where there is no record in sales table.
So if you do a left outer join on time dimension you will get all the dates
Option 2) In report level, create one more data provider with date object and merge the dates of initial dp and this new dp. Then also you get all the dates
Option 3) Use the function TimeDim([date];dayperiod) this also gives all the missing dates (as Neeraj mentioned). Then you need modify the measure saying if(isnull(sales);0;sales)''
Hope this helps. choose the option which is suitable in your sitution