To find the number of days between two dates we can use something like this:
SELECT date_part(\'day\',age(\'2017-01-31\',\'2017-01-01\')) as total_days;
You could try using generate_series to generate all the dates between given date and then take count of required days.
generate_series
SELECT count(case when extract(dow from generate_series) <> 0 then 1 end) n from generate_series('2017-01-01'::date,'2017-01-31'::date, '1 day');