Consula por periodos actuales

From: Ruben Fitó <r(dot)fito(at)ubiquat(dot)com>
To: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Consula por periodos actuales
Date: 2014-06-13 12:10:32
Message-ID: CANiYpQwmxCmVVwqazfFAXpQORzn4X7foZCw=QxbBxQdtOBaf2w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message jvenegasperu . 2014-06-13 12:40:44 Re: Consula por periodos actuales
Previous Message raul andrez gutierrez alejo 2014-06-10 20:14:45 Problema de espacio en disco duro postgres sobre windows