Следующий запрос делает это.
Сначала сгенерируйте строки, используя предложение connect by, каждая строка будет иметь значение столбца «level», увеличенное на 1
Также получите day_of_week за дату
Отфильтруйте записи, где day_of_week = 'sun'
with data
as (
select to_date('1/10/2018','dd/mm/yyyy')+level as sun_day
,to_char(to_date('1/10/2018','dd/mm/yyyy')+level,'dy') day_of_week
from dual
connect by level<=to_date('31/12/2018','dd/mm/yyyy') - to_date('1/10/2018','dd/mm/yyyy')
)
select sun_day
from data
where day_of_week='sun'
Для второй части запроса просто удалите фильтр на day_of_week
with data
as (
select to_date('1/10/2018','dd/mm/yyyy')+level as sun_day
,to_char(to_date('1/10/2018','dd/mm/yyyy')+level,'dy') day_of_week
from dual
connect by level<=to_date('31/12/2018','dd/mm/yyyy') - to_date('1/10/2018','dd/mm/yyyy')
)
select sun_day
from data;