> -----Mensaje original-----
> De: Jose Luis Balle
> 
> Usa la función extract para obtener el día de la semana de la 
> fecha, luego calculá la distancia al lunes y restala a hoy, 
> le volves a restar 7 y estas en el lunes pasado.
> Espero haber sido claro :O)
> Acá va un ejemplo:
> select current_date - (6 - extract ( dow from 
> '20091202'::date ) )::integer - 7 as lunes, current_date - (2 
> - extract ( dow from '20091202'::date ) )::integer - 7 as 
> viernes Saludos.
> PD: Puede haber mejores algoritmos ...
> 

Hmm, no retorna bien los límites. Además, si la fecha cae domingo retorna
los límites de la misma semana y no la pasada.
La solución que encontré es un poco más fea pero parece funcionar en todos
los casos.
Va usando de ejemplo 29/11 que fue domingo:

SELECT CASE WHEN extract(dow from '2009.11.29'::date) = 0 THEN
'2009.11.29'::date - 14 
            ELSE '2009.11.29'::date - extract(dow from
'2009.11.29'::date)::integer - 6 END AS Lunes,
       CASE WHEN extract(dow from '2009.11.29'::date) = 0 THEN
'2009.11.29'::date - 7 
            ELSE '2009.11.29'::date - extract(dow from
'2009.11.29'::date)::integer END AS Domingo


Si a alguno se le ocurre como resolverlo sin el case para contemplar el
domingo soy todo oidos.

Saludos.

--
TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net

Responder a