Muy elegante y útil. Fácil de adaptar. Yo estaba buscando algo similar, y la perfección funciono.
Aunque yo no estuve involucrado en este tema, doy las gracias por que funciono bien. 2010/1/14 Jaime Casanova <[email protected]> > 2010/1/14 Raúl Andrés Duque Murillo <[email protected]>: > > Que tal Jorge. > > > > Utilizando un generate_series puedes lograr tu objetivo de forma > sencilla. > > > > Pero aun prefiero la forma con el WITH RECURSIVE, es mas elegante ;) > > select to_char(extract(week from (f1 + (i || ' weeks')::interval)), > '09') as num, > (f1 + (i || ' weeks')::interval)::date, > (f2 + (i || ' weeks')::interval)::date > from (select f1, f1 + 6 as f2 > from (select (current_date - > (extract(week from current_date) - 1 || ' > weeks')::interval)::date - > (extract(dow from current_date)::integer - 1) as f1 > ) as foo1 > ) as foo2, generate_series(0, 52) as i > where extract(year from (f1 + (i || ' weeks')::interval)) = 2010 > > > en forma de función: > > > CREATE OR REPLACE FUNCTION fechas_anio(anio integer) RETURNS SETOF record > AS > $$ > select to_char(extract(week from (f1 + (i || ' weeks')::interval)), > '09') as num, > (f1 + (i || ' weeks')::interval)::date, > (f2 + (i || ' weeks')::interval)::date > from (select f1, f1 + 6 as f2 > from (select (($1 || '-02-01')::date - > (extract(week from ($1 || '-02-01')::date) - > 1 || ' weeks')::interval)::date - > (extract(dow from ($1 || > '-02-01')::date)::integer - 1) as f1 > ) as foo1 > ) as foo2, generate_series(0, 52) as i > where extract(year from (f1 + (i || ' weeks')::interval)) = $1; > $$ language sql > > > y lo llamarías asi (fijate que debes incluir el formato de retorno o > crear un tipo para esto): > > select * from fechas_anio(2010) as (semana text, fecha_inicial date, > fecha_final date) > > -- > Atentamente, > Jaime Casanova > Soporte y capacitación de PostgreSQL > Asesoría y desarrollo de sistemas > Guayaquil - Ecuador > Cel. +59387171157 > -- > TIP 2: puedes desuscribirte de todas las listas simultáneamente > (envía "unregister TuDirecciónDeCorreo" a [email protected]) > -- Luis Fernando Curiel Cabrera - Professional ABACO DE BOLITAS Developer. - Certified ABACO DE BOLITAS Programmer.
