Re: Numero de semana + fechas

From: Luis Fernando Curiel Cabrera <lcuriel(at)gmail(dot)com>
To: Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
Cc: Raúl Andrés Duque Murillo <ra_duque(at)yahoo(dot)com(dot)mx>, Jorge Diaz <jorge(dot)diaz(dot)t(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Numero de semana + fechas
Date: 2010-01-14 17:49:43
Message-ID: 4fa3ceed1001140949t62b95672l4278d4d64f5fedff@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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 <jcasanov(at)systemguards(dot)com(dot)ec>

> 2010/1/14 Raúl Andrés Duque Murillo <ra_duque(at)yahoo(dot)com(dot)mx>:
> > 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 majordomo(at)postgresql(dot)org)
>

--
Luis Fernando Curiel Cabrera
- Professional ABACO DE BOLITAS Developer.
- Certified ABACO DE BOLITAS Programmer.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Edwin Quijada 2010-01-14 18:03:55 RE: lanzar mensajes desde fucnion pgsql a fichero de texto
Previous Message Enrique Fernandez 2010-01-14 17:17:11 Re: Instalacion PHP no me funciona