Anda dapat menggunakan generate_series()
untuk menghindari CTE dan aritmatika tanggal yang berbelit-belit. Berikut ini contoh untuk Anda mulai:
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
Anda sebaiknya menambahkan kasus di semester kedua untuk menghapus apa pun di tahun 2017, dan kasus ini dapat ditulis ulang menjadi langkah setiap minggu, tetapi hal itu akan membuat Anda berada di jalur yang benar.