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ó <[email protected]> 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] [email protected] > <[email protected]> > 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: [email protected] [email protected] PHP Spanish Docs translator member. http://www.php.net/manual/es/index.php
