Efectivamente, porque en un lugar usé current_date y en otro una fecha a dedo y quedo como el de sentarse. Pero el razonamiento está bien aunque mal implementado. Ahora si: Distancia al domingo (sunday=0): 0 - extract ( dow from '20091129'::date ) a la fecha en cuestion le tengo que restar esa diferencia para llegar a domingo de esta semana, si le resto 7 días más estoy en el domingo de la semana anterior '20091129'::date - (7- (0 - extract ( dow from '20091129'::date )))::integer Cambia 20091129 por lo que quieras que tiene que funcionar, no se.. años bisiestos?
Creo que ahora si. select '20091129'::date - (7- (0 - extract ( dow from '20091129'::date )))::integer as distancialdomingo, '20091129'::date - (7- (6 - extract ( dow from '20091129'::date )))::integer as distancialsabado El día 4 de diciembre de 2009 15:34, Fernando Hevia <[email protected]> escribió: > > >> -----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. > > -- "Los derechos humanos deberían ser para las personas...." -- TIP 6: ¿Has buscado en los archivos de nuestra lista de correo? http://archives.postgresql.org/pgsql-es-ayuda
