Re: Consula por periodos actuales

From: Ruben Fitó <r(dot)fito(at)ubiquat(dot)com>
To: "jvenegasperu (dot)" <jvenegasperu(at)gmail(dot)com>
Cc: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Consula por periodos actuales
Date: 2014-06-13 13:01:24
Message-ID: CANiYpQxFc-Tu8bcSL6j1+1i3Xayag4ga1TBUy672Q2yMiOws2Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola,

gracias por la respuesta, perdón si no me he sabido explicar, pero no
necesito obtener la fecha de hace 10 días o 15 días sino la fecha del
inicio del período de facturación.

Un caso de uso seria:

- Un cliente tiene configurado que se le facturará cada 10 días,
empezando por el día 1 de cada mes.
- Entonces, para que no se pase de ventas, en cada transacción hemos de
mirar la suma de importes des de cada inicio de período:
- caso A) Si estamos en el dia 5 del mes, se sumaran los importes del
dia 1,2,3,4 y 5.
- caso B) Si estamos en el dia 18 del mes, se sumaran los importes
del dia 11, 12, 13, 14, 15,16, 17 y 18.
- caso C) Si estamos en el dia 25 del mes, se sumaran los importes
del dia 21, 22, 23, 24 y 25.

Con ello, lo que quiero decir es según el período de facturación, me diga
la fecha inicial con la que he de empezar a buscar:

Ejemplo gráfico (cada 10 dias):

*1,* 2, 3, 4, 5, 6, 7, 8, 9, 10, *11*, 12, 13, 14, 15, 16, 17, 18, 19, 20,
*21,* *............ *último dia del mes
|----------------------------| |-------------------------------------|
|----------------------------------|

Si estamos a día 13, la función que necesito me tendría que devolver la
fecha del *dia 11* del mes, ya que ha partir de aquí he de calcular la suma
de importes.

No se si me he podido explicar mejor. jejeje

Gracias,

saludos

2014-06-13 14:40 GMT+02:00 jvenegasperu . <jvenegasperu(at)gmail(dot)com>:

> Hola Ruben buenos dias
>
> para esos casos puedes usar interval
>
> select current_date, current_date - interval '10 day' as hace_10_dias;
>
> select current_date, current_date - interval '15 day' as hace_15_dias;
>
> http://www.postgresql.org/docs/9.3/static/functions-datetime.html
>
>
> saludos
>
>
> El 13 de junio de 2014, 7:10, Ruben Fitó <r(dot)fito(at)ubiquat(dot)com> escribió:
>
> Hola,
>>
>> me gustaría saber si existe alguna función en postgres que me permita
>> buscar por diferentes "períodos" de mes, sin necesidad de hacer cálculos de
>> periodos.
>>
>> Me explico, tenemos clientes que facturan cada mes, cada semana o cada
>> 10 días(por mes), o sea que mensualmente:
>>
>> Cliente 1(por mes) se facturaran la compras realizadas des de el 1 hasta
>> final de mes.
>> Cliente 2(por quincenas) se le facturaran las compras del 1 al 15 y del
>> 15 hasta final de mes.
>> Cliente 3(cada 10 días) se le facturaran las compras del 1 al 10, del 11
>> al 20 y del 21 a final de mes.
>>
>> Del mismo modo hay necesidad de hacer los cálculos de consumo por período
>> en tiempo de ejecución, o sea, cuánto ha consumido hasta "ahora", en su
>> periodo de facturación actual(mensual, quincenal o cada 10 días).
>>
>> Actualmente ahora tenemos en una función de bbdd los cálculos necesarios
>> para determinar las fechas del periodo de facturación actual, pero hay
>> necesidad de aplicar otro tipo de periodos(*semanalmente*, por ejemplo)
>> en otros ámbitos y nos gustaría saber si existe alguna función en postgres
>> que me permita distribuir los meses por diferentes periodos.
>>
>> Un ejemplo de lo que digo seria:
>>
>> SELECT sum(importe) FROM ventas WHERE cliente=12345 AND fecha_venta
>> BETWEEN *inicio_periodo('X dias')* AND now();
>>
>>
>> *incio_periodo* seria la función postgres donde le paso los días de
>> duración del periodo, o también podría pasar una fracción del mes. No sé
>> algo así.
>>
>> Una manera que he encontrado para hacerlo seria buscar las ventas del mes
>> actual o de la semana actual.
>>
>> SELECT sum(importe) FROM ventas WHERE cliente=12345 fecha_venta BETWEEN
>> (SELECT date_trunc('*MONTH*',now())::DATE) AND now(); --> para el mes
>> actual.
>> SELECT sum(importe) FROM ventas WHERE cliente=12345 fecha_venta BETWEEN
>> (SELECT date_trunc('*WEEK*',now())::DATE) AND now(); --> para la semana
>> actual.
>> ?? --> Para la quincena actual
>> ?? --> Para "decena" actual
>>
>> El problema está en que no puedo filtrar 'cada 10 dias' o 'cada quinzena'
>> en esta consulta.
>>
>> Como lo veis, hay algo que pueda ayudarme??
>>
>>
>> Muchas gracias de antemano.
>>
>> Saludos
>>
>>
>> --
>> *Ruben Fitó *
>> Software Engineer
>> [image: Ubiquat Technologies, SL] r(dot)fito(at)ubiquat(dot)com
>> <j(dot)catarineu(at)ubiquat(dot)com>
>> www.ubiquat.com
>> Tota la informació continguda en aquest document i arxius adjunts és
>> CONFIDENCIAL protegida per llei de secret comercial. Si l'ha rebut per
>> error, si us plau elimini'l i posi's en contacte amb l'emissor.
>>
>> All information contained in this document and any attachments are
>> CONFIDENTIAL and protected under trade secret laws. If you receive this
>> message by mistake, please delete it and notify it immediately to the
>> sender.
>>
>
>
>
> --
> José Mercedes Venegas Acevedo
> cel: Mov. 949808846
>
> mails: jvenegasperu(at)php(dot)net
> jvenegasperu(at)gmail(dot)com
>
> PHP Spanish Docs translator member.
> http://www.php.net/manual/es/index.php
>

--
*Ruben Fitó *
Software Engineer
[image: Ubiquat Technologies, SL] r(dot)fito(at)ubiquat(dot)com
<j(dot)catarineu(at)ubiquat(dot)com>
www.ubiquat.com
Tota la informació continguda en aquest document i arxius adjunts és
CONFIDENCIAL protegida per llei de secret comercial. Si l'ha rebut per
error, si us plau elimini'l i posi's en contacte amb l'emissor.

All information contained in this document and any attachments are
CONFIDENTIAL and protected under trade secret laws. If you receive this
message by mistake, please delete it and notify it immediately to the
sender.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message raul andrez gutierrez alejo 2014-06-13 13:49:30 Re: Consula por periodos actuales
Previous Message jvenegasperu . 2014-06-13 12:40:44 Re: Consula por periodos actuales