Możesz użyć generate_series()
aby uniknąć zawiłych CTE i arytmetyki dat. Oto przykład na początek:
select d, d + interval '6 days'
from generate_series('2016-01-01'::date, '2016-12-31'::date, '1 day'::interval) d
where date_trunc('week', d) = d
Będziesz chciał dodać przypadek w drugim semestrze, aby usunąć wszystko w 2017 roku i może być przepisany krok po tygodniu, ale powinno to naprowadzić Cię na właściwą ścieżkę.