Lists: | pgsql-es-ayuda |
---|
From: | Arcel Labrada Batista <alabradab(at)uci(dot)cu> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | trabajo con fechas |
Date: | 2009-12-04 14:51:57 |
Message-ID: | 1226889964.62451259938317945.JavaMail.root@ucimail1.uci.cu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Buenos días listeros,
necesito hacer una consulta aparentemente sencilla y después de leer en el manual he encontrado algunas funciones de trabajo con fechas pero no he resuelto mi problema, el ejemplo es el siguiente, tengo una tabla que tiene un campo fecha y tiene datos por supuesto,
necesito que me devuelva los datos para aquellos registros que cumplan la siguiente condición, que la fecha este enclavada en la semana pasada, o sea, desde lunes a domingo pero de la semana pasada, se que puedo poner de manera estática los días pero me quiero quitar esa responsabilidad de estar pasando las fechas, si me pueden ayudar o si ya has hecho esto antes se los agradecería, Saludos,
Arcel Labrada Batista
Universidad de las Ciencias Informáticas
From: | Jose Luis Balle <joseluisballe(at)gmail(dot)com> |
---|---|
To: | Arcel Labrada Batista <alabradab(at)uci(dot)cu> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: trabajo con fechas |
Date: | 2009-12-04 15:21:29 |
Message-ID: | 6d87542d0912040721i74651aecra41d15732b5bdf78@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
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 ...
El día 4 de diciembre de 2009 11:51, Arcel Labrada Batista
<alabradab(at)uci(dot)cu> escribió:
>
> Buenos días listeros,
>
> necesito hacer una consulta aparentemente sencilla y después de leer en el manual he encontrado algunas funciones de trabajo con fechas pero no he resuelto mi problema, el ejemplo es el siguiente, tengo una tabla que tiene un campo fecha y tiene datos por supuesto,
>
> necesito que me devuelva los datos para aquellos registros que cumplan la siguiente condición, que la fecha este enclavada en la semana pasada, o sea, desde lunes a domingo pero de la semana pasada, se que puedo poner de manera estática los días pero me quiero quitar esa responsabilidad de estar pasando las fechas, si me pueden ayudar o si ya has hecho esto antes se los agradecería, Saludos,
>
> Arcel Labrada Batista
> Universidad de las Ciencias Informáticas
> --
> TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podrá leerlo
>
--
"Los derechos humanos deberían ser para las personas...."
From: | Julio Cesar Rodriguez Dominguez <jurasec(at)gmail(dot)com> |
---|---|
To: | Arcel Labrada Batista <alabradab(at)uci(dot)cu> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: trabajo con fechas |
Date: | 2009-12-04 15:25:52 |
Message-ID: | 925902880912040725u4b9f0670tbfb4d6dd3dc9c725@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
El 4 de diciembre de 2009 08:51, Arcel Labrada Batista
<alabradab(at)uci(dot)cu>escribió:
>
> Buenos días listeros,
>
> necesito hacer una consulta aparentemente sencilla y después de leer en el
> manual he encontrado algunas funciones de trabajo con fechas pero no he
> resuelto mi problema, el ejemplo es el siguiente, tengo una tabla que tiene
> un campo fecha y tiene datos por supuesto,
>
> necesito que me devuelva los datos para aquellos registros que cumplan la
> siguiente condición, que la fecha este enclavada en la semana pasada, o sea,
> desde lunes a domingo pero de la semana pasada, se que puedo poner de manera
> estática los días pero me quiero quitar esa responsabilidad de estar pasando
> las fechas, si me pueden ayudar o si ya has hecho esto antes se los
> agradecería, Saludos,
>
> Arcel Labrada Batista
> Universidad de las Ciencias Informáticas
>
te puede servir:
campo_date - '1 week'::interval
From: | Jose Luis Balle <joseluisballe(at)gmail(dot)com> |
---|---|
To: | Julio Cesar Rodriguez Dominguez <jurasec(at)gmail(dot)com> |
Cc: | Arcel Labrada Batista <alabradab(at)uci(dot)cu>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: trabajo con fechas |
Date: | 2009-12-04 15:33:33 |
Message-ID: | 6d87542d0912040733q78ecb8bev99d26e24c7131324@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
nop, porque ahi lo que haces es restarle 7 días a la fecha
"campo_date" y lo que necesita él es encontrar el lunes de la semana
pasada y el viernes de la semana pasada para filtrar.
En realidad yo le pase la formula para lunes a viernes, ahora que leo
bien el mensaje pero le puede servir corriendo los parametros para
domingo a sabado, etc.
El día 4 de diciembre de 2009 12:25, Julio Cesar Rodriguez Dominguez
<jurasec(at)gmail(dot)com> escribió:
>
>
> El 4 de diciembre de 2009 08:51, Arcel Labrada Batista <alabradab(at)uci(dot)cu>
> escribió:
>>
>> Buenos días listeros,
>>
>> necesito hacer una consulta aparentemente sencilla y después de leer en el
>> manual he encontrado algunas funciones de trabajo con fechas pero no he
>> resuelto mi problema, el ejemplo es el siguiente, tengo una tabla que tiene
>> un campo fecha y tiene datos por supuesto,
>>
>> necesito que me devuelva los datos para aquellos registros que cumplan la
>> siguiente condición, que la fecha este enclavada en la semana pasada, o sea,
>> desde lunes a domingo pero de la semana pasada, se que puedo poner de manera
>> estática los días pero me quiero quitar esa responsabilidad de estar pasando
>> las fechas, si me pueden ayudar o si ya has hecho esto antes se los
>> agradecería, Saludos,
>>
>> Arcel Labrada Batista
>> Universidad de las Ciencias Informáticas
>
> te puede servir:
>
> campo_date - '1 week'::interval
>
>
>
--
"Los derechos humanos deberían ser para las personas...."
From: | "Fernando Hevia" <fhevia(at)ip-tel(dot)com(dot)ar> |
---|---|
To: | "'Jose Luis Balle'" <joseluisballe(at)gmail(dot)com>, "'Arcel Labrada Batista'" <alabradab(at)uci(dot)cu> |
Cc: | <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | RE: trabajo con fechas |
Date: | 2009-12-04 18:34:38 |
Message-ID: | 5EC9764B0EA144F0A17067A61E7C938D@iptel.com.ar |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
> -----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.
From: | Jose Luis Balle <joseluisballe(at)gmail(dot)com> |
---|---|
To: | Fernando Hevia <fhevia(at)ip-tel(dot)com(dot)ar> |
Cc: | Arcel Labrada Batista <alabradab(at)uci(dot)cu>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: trabajo con fechas |
Date: | 2009-12-04 18:56:35 |
Message-ID: | 6d87542d0912041056x74c67632qc72032b5d375d064@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
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
<fhevia(at)ip-tel(dot)com(dot)ar> 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...."
From: | "Fernando Hevia" <fhevia(at)ip-tel(dot)com(dot)ar> |
---|---|
To: | "'Jose Luis Balle'" <joseluisballe(at)gmail(dot)com> |
Cc: | "'Arcel Labrada Batista'" <alabradab(at)uci(dot)cu>, <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | RE: trabajo con fechas |
Date: | 2009-12-04 19:37:53 |
Message-ID: | E89A14581C114BBBAD224F2D25F4B3A4@iptel.com.ar |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
> -----Mensaje original-----
> De: Jose Luis Balle [mailto:joseluisballe(at)gmail(dot)com]
>
> 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.
>
Confieso que no reparé en el evidente mix de current_date y la otra fecha.
:)
El tema es que como Arcel fija su semana de Lunes a Domingo, falla
justamente cuando la fecha evaluada es un Domingo.
Para el 30/11 yo esperaría me devolviese la semana anterior del 16/11 al
22/11.
Si en cambio la semana es considerada de Domingo a Sábado, entonces si, tu
propuesta funciona y es más bonita que el case.
Saludos,
Fernando.
From: | Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec> |
---|---|
To: | Arcel Labrada Batista <alabradab(at)uci(dot)cu> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: trabajo con fechas |
Date: | 2009-12-05 00:17:09 |
Message-ID: | 3073cc9b0912041617w4ca20de2g7b2f8042d27760d0@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
2009/12/4 Arcel Labrada Batista <alabradab(at)uci(dot)cu>:
>
> necesito que me devuelva los datos para aquellos registros que cumplan la siguiente condición, que la fecha este enclavada en la
> semana pasada, o sea, desde lunes a domingo pero de la semana pasada
llamenme loco, pero me prefiero las cosas simples ;)
Por cierto, lo importante es solo la clausula WHERE del select fuera
de la clausula WITH
with q as (
select *
from generate_series('2009-10-01 00:00:00'::timestamp with time zone,
'2009-12-04 00:00:00'::timestamp with time zone,
'1 day'::interval) as foo
)
select * from q where extract(week from foo) = extract(week from
current_date) - 1
--
Atentamente,
Jaime Casanova
Soporte y capacitación de PostgreSQL
Asesoría y desarrollo de sistemas
Guayaquil - Ecuador
Cel. +59387171157
From: | Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec> |
---|---|
To: | Arcel Labrada Batista <alabradab(at)uci(dot)cu>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: trabajo con fechas |
Date: | 2009-12-05 04:08:24 |
Message-ID: | 3073cc9b0912042008w49341cd0kfacabc2f339719a6@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Ahora caigo en cuenta que esto falla al cambiar de año
El 04/12/09, Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec> escribió:
> 2009/12/4 Arcel Labrada Batista <alabradab(at)uci(dot)cu>:
>>
>> necesito que me devuelva los datos para aquellos registros que cumplan la
>> siguiente condición, que la fecha este enclavada en la
>> semana pasada, o sea, desde lunes a domingo pero de la semana pasada
>
> llamenme loco, pero me prefiero las cosas simples ;)
>
> Por cierto, lo importante es solo la clausula WHERE del select fuera
> de la clausula WITH
>
> with q as (
> select *
> from generate_series('2009-10-01 00:00:00'::timestamp with time zone,
> '2009-12-04 00:00:00'::timestamp with time zone,
> '1 day'::interval) as foo
> )
> select * from q where extract(week from foo) = extract(week from
> current_date) - 1
>
> --
> Atentamente,
> Jaime Casanova
> Soporte y capacitación de PostgreSQL
> Asesoría y desarrollo de sistemas
> Guayaquil - Ecuador
> Cel. +59387171157
>
--
Enviado desde mi dispositivo móvil
Atentamente,
Jaime Casanova
Soporte y capacitación de PostgreSQL
Asesoría y desarrollo de sistemas
Guayaquil - Ecuador
Cel. +59387171157
From: | Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec> |
---|---|
To: | Arcel Labrada Batista <alabradab(at)uci(dot)cu>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: trabajo con fechas |
Date: | 2009-12-06 00:53:11 |
Message-ID: | 3073cc9b0912051653y32d8af49l5c383686bd758706@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
2009/12/4 Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
>
> Ahora caigo en cuenta que esto falla al cambiar de año
>
Aja! esta es la manera:
with q as (
select *
from generate_series('2009-10-01 00:00:00'::timestamp with time zone,
'2010-12-04 00:00:00'::timestamp with time zone,
'1 day'::interval) as foo
)
select * from q
where extract(week from foo + '1 week'::interval) = extract(week from
current_date)
--
Atentamente,
Jaime Casanova
Soporte y capacitación de PostgreSQL
Asesoría y desarrollo de sistemas
Guayaquil - Ecuador
Cel. +59387171157
From: | Jose Luis Balle <joseluisballe(at)gmail(dot)com> |
---|---|
To: | Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec> |
Cc: | Arcel Labrada Batista <alabradab(at)uci(dot)cu>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: trabajo con fechas |
Date: | 2009-12-07 17:07:04 |
Message-ID: | 6d87542d0912070907j7844bbbdo47f21190ab9338cf@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
jaja
Excelente, debemos agradecer a Arcel por hacer tan rica la lista. No
se si le solucionamos todo pero tiene un monton de pistas para
investigar.
Me gusto la solución de Jaime aunque cuestiono lo de sencillo.
El día 5 de diciembre de 2009 21:53, Jaime Casanova
<jcasanov(at)systemguards(dot)com(dot)ec> escribió:
> 2009/12/4 Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
>>
>> Ahora caigo en cuenta que esto falla al cambiar de año
>>
>
> Aja! esta es la manera:
>
> with q as (
> select *
> from generate_series('2009-10-01 00:00:00'::timestamp with time zone,
> '2010-12-04 00:00:00'::timestamp with time zone,
> '1 day'::interval) as foo
> )
> select * from q
> where extract(week from foo + '1 week'::interval) = extract(week from
> current_date)
>
> --
> Atentamente,
> Jaime Casanova
> Soporte y capacitación de PostgreSQL
> Asesoría y desarrollo de sistemas
> Guayaquil - Ecuador
> Cel. +59387171157
> --
> TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo agradecerán
>
--
"Los derechos humanos deberían ser para las personas...."
From: | Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec> |
---|---|
To: | Jose Luis Balle <joseluisballe(at)gmail(dot)com> |
Cc: | Arcel Labrada Batista <alabradab(at)uci(dot)cu>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: trabajo con fechas |
Date: | 2009-12-07 17:24:33 |
Message-ID: | 3073cc9b0912070924o4917312fya70b87cb7040f3aa@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
2009/12/7 Jose Luis Balle <joseluisballe(at)gmail(dot)com>:
> Me gusto la solución de Jaime aunque cuestiono lo de sencillo.
>
probablemente no se ve tan simple por añadi el WITH pero eso es solo
para hacer la prueba, hubiera sido mejor si hubiese usado una tabla?
de todos modos (como a mi las cosas se me ocurren por partes) ahora es
obvio que aun hay que chequear el año de lo contrario la semana 52 o
53 de hace años podria parecer la semana anterior a la semana 1 del
2010
--
Atentamente,
Jaime Casanova
Soporte y capacitación de PostgreSQL
Asesoría y desarrollo de sistemas
Guayaquil - Ecuador
Cel. +59387171157
From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
---|---|
To: | Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec> |
Cc: | Arcel Labrada Batista <alabradab(at)uci(dot)cu>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: trabajo con fechas |
Date: | 2009-12-07 18:21:04 |
Message-ID: | 20091207182104.GK3552@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Jaime Casanova escribió:
> 2009/12/4 Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>
> >
> > Ahora caigo en cuenta que esto falla al cambiar de año
> >
>
> Aja! esta es la manera:
>
> with q as (
> select *
> from generate_series('2009-10-01 00:00:00'::timestamp with time zone,
> '2010-12-04 00:00:00'::timestamp with time zone,
> '1 day'::interval) as foo
> )
> select * from q
> where extract(week from foo + '1 week'::interval) = extract(week from
> current_date)
A mí no me gusta mucho esta solución, porque funciona ahora pero el 2011
va a dejar de funcionar. Además tienes que llenar un tuplestore con
todos los días de un período de más de un año, para luego tener que
hacer un join de ese tuple store (==> ineficiente). La otra solución
que usaba aritmética para encontrar exactamente la semana que querías se
ve un poco más compleja pero es más precisa.
Creo que lo ideal sería expresar esa otra solución usando WITH;
seguramente se vería más bonito :-)
--
Alvaro Herrera Vendo parcela en Valdivia:
http://valdivia.vivastreet.cl/loteos-lotes+valdivia/parcela-en-cabo-blanco--valdivia/19288372
"I love the Postgres community. It's all about doing things _properly_. :-)"
(David Garamond)
From: | Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec> |
---|---|
To: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
Cc: | Arcel Labrada Batista <alabradab(at)uci(dot)cu>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: trabajo con fechas |
Date: | 2009-12-07 18:47:50 |
Message-ID: | 3073cc9b0912071047l2c86f071qbc1a92b548621fd9@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
2009/12/7 Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>:
>
> A mí no me gusta mucho esta solución, porque funciona ahora pero el 2011
> va a dejar de funcionar. Además tienes que llenar un tuplestore con
> todos los días de un período de más de un año, para luego tener que
> hacer un join de ese tuple store (==> ineficiente). La otra solución
> que usaba aritmética para encontrar exactamente la semana que querías se
> ve un poco más compleja pero es más precisa.
>
eh! no... en realidad lo unico necesario es (agregando la validacion
del año que mencione antes):
select * from tabla
where (extract(year from campo_fecha + '1 week'::interval) =
extract(year from current_date)
and extract(week from campo_fecha + '1 week'::interval) =
extract(week from current_date))
--
Atentamente,
Jaime Casanova
Soporte y capacitación de PostgreSQL
Asesoría y desarrollo de sistemas
Guayaquil - Ecuador
Cel. +59387171157
From: | Oswaldo Hernández <listas(at)soft-com(dot)es> |
---|---|
To: | Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec> |
Cc: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, Arcel Labrada Batista <alabradab(at)uci(dot)cu>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: trabajo con fechas |
Date: | 2009-12-07 19:32:25 |
Message-ID: | 4B1D5849.3040207@soft-com.es |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
Jaime Casanova escribió:
> 2009/12/7 Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>:
>> A mí no me gusta mucho esta solución, porque funciona ahora pero el 2011
>> va a dejar de funcionar. Además tienes que llenar un tuplestore con
>> todos los días de un período de más de un año, para luego tener que
>> hacer un join de ese tuple store (==> ineficiente). La otra solución
>> que usaba aritmética para encontrar exactamente la semana que querías se
>> ve un poco más compleja pero es más precisa.
>>
>
> eh! no... en realidad lo unico necesario es (agregando la validacion
> del año que mencione antes):
>
> select * from tabla
> where (extract(year from campo_fecha + '1 week'::interval) =
> extract(year from current_date)
> and extract(week from campo_fecha + '1 week'::interval) =
> extract(week from current_date))
>
Otra posibilidad es restar a la diferencia de días el dia actual de la semana. Si el resultado esta
entre 0 y 6 la fecha era de la semana pasada:
select * from tabla
where
current_date - campo_fecha - extract(dow from current_date) between 0 and 6
Saludos,
--
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
PD:
Antes de imprimir este mensaje, asegúrese de que es necesario.
El medio ambiente está en nuestra mano.
From: | Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec> |
---|---|
To: | Oswaldo Hernández <listas(at)soft-com(dot)es> |
Cc: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, Arcel Labrada Batista <alabradab(at)uci(dot)cu>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: trabajo con fechas |
Date: | 2009-12-07 20:07:02 |
Message-ID: | 3073cc9b0912071207j7864beecy9dd0d1d0396d7790@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-es-ayuda |
2009/12/7 Oswaldo Hernández <listas(at)soft-com(dot)es>:
>
> select * from tabla
> where
> current_date - campo_fecha - extract(dow from current_date) between 0 and
> 6
>
pense que no iba a funcionar, pero una prueba rapida dice que si...
muy buena sugerencia...
--
Atentamente,
Jaime Casanova
Soporte y capacitación de PostgreSQL
Asesoría y desarrollo de sistemas
Guayaquil - Ecuador
Cel. +59387171157