sql >> Base de Datos >  >> RDS >> PostgreSQL

Postgresql obtiene el primer y último día de todas las semanas iso en un año determinado

Puedes usar generate_series() para evitar la enrevesada CTE y la aritmética de fechas. He aquí un ejemplo para empezar:

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

Querrás agregar un caso en el segundo término para eliminar cualquier cosa en 2017, y se podría reescribir paso a paso una semana a la vez, pero debería ponerte en el camino correcto.