Re: Restar dos campos de tipo fecha de distintos registros

From: Hellmuth Vargas <hivs77(at)gmail(dot)com>
To: Alberto Cuevas <betocuevas(dot)net(at)gmail(dot)com>
Cc: Gerardo Herzig <gherzig(at)fmed(dot)uba(dot)ar>, Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Restar dos campos de tipo fecha de distintos registros
Date: 2016-04-18 18:18:23
Message-ID: CAN3Qy4r7pxzx5e+OVgH28-pq_W=gspX4XrK4VsMfVY=6C3bUcw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola lista

Con Window Functions (
http://www.postgresql.org/docs/9.4/static/tutorial-window.html) puede
realizar eso...para el problema especifico seria asi:

SELECT *,lag(FechaInicial) over(order by Ord),FechaFinal-lag(FechaInicial)
over(order by Ord) as diferencia
from (values (1,cast('01/10/2015' as date),cast('01/12/2015' as date)),
(2,cast('01/08/2015' as date),cast('01/10/2015' as date)),
(3,cast('01/06/2015' as date),cast('01/08/2015' as date)),
(4,cast('01/05/2015' as date),cast('01/06/2015' as date)),
(5,cast('01/04/2015' as date),cast('01/05/2015' as date)),
(6,cast('01/03/2015' as date),cast('01/04/2015' as date)),
(7,cast('01/02/2015' as date),cast('01/03/2015' as date)),
(8,cast('01/01/2015' as date),cast('28/01/2015' as date)),
(9,cast('01/12/2014' as date),cast('01/01/2015' as date)),
(10,cast('01/11/2014' as date),cast('01/12/2014' as date))) as
a(Ord,FechaInicial,FechaFinal)

con resultado

Ord FechaInicial FechaFinal fechaInicialFilaAnterior Diferencia
1 2015-10-01 2015-12-01

2 2015-08-01 2015-10-01 2015-10-01 0
3 2015-06-01 2015-08-01 2015-08-01 0
4 2015-05-01 2015-06-01 2015-06-01 0
5 2015-04-01 2015-05-01 2015-05-01 0
6 2015-03-01 2015-04-01 2015-04-01 0
7 2015-02-01 2015-03-01 2015-03-01 0
8 2015-01-01 2015-01-28 2015-02-01 -4
9 2014-12-01 2015-01-01 2015-01-01 0
10 2014-11-01 2014-12-01 2014-12-01 0

El 18 de abril de 2016, 13:03, Alberto Cuevas<betocuevas(dot)net(at)gmail(dot)com>
escribió:

> Muchas gracias por responder, disculpen por no dar un ejemplo mas claro,
> mi tabla tiene los registros similar a esto:
>
> |Ord. | FechaInicial | FechaFinal |
> |1 | 01/10/2015 | 01/12/2015 |
> |2 | 01/08/2015 | 01/10/2015 |
> |3 | 01/06/2015 | 01/08/2015 |
> |4 | 01/05/2015 | 01/06/2015 |
> |5 | 01/04/2015 | 01/05/2015 |
> |6 | 01/03/2015 | 01/04/2015 |
> |7 | 01/02/2015 | 01/03/2015 |
> |8 | 01/01/2015 | 28/01/2015 |
> |9 | 01/12/2014 | 01/01/2015 |
> |10 | 01/11/2014 | 01/12/2014 |
>
> Debo restar FechaFinal - FechaInicial es decir:
>
> FechaFinal de Ord. 2 - FechaInicial de Ord.1 = 0 dias
> FechaFinal de Ord. 3 - FechaInicial de Ord.2 = 0 dias
> ......
> Y asi sucesivamente..
>
> Espero me puedan entender.
>
> Saludos.
>
>
> El lun., 18 abr. 2016 a las 12:20, Gerardo Herzig (<gherzig(at)fmed(dot)uba(dot)ar>)
> escribió:
>
>> Vas a tener que orquestar 2 selects distintos para sacar tu "fecha
>> inicial" y tu "fecha final". Supongo que tu tabla de ejemplo es
>> esquematica, pero mas alla de la posible complejidad del select, el tipo
>> date soporta el operador de resta "habitual":
>>
>> (select fechafinal from TABLA where ord = 1) - (select fechainicial from
>> TABLA where ord=2)
>>
>> En tu ejemplo, el resultado seria negativo, por cierto, pero calculo que
>> eso lo podras contemplar.
>> HTH
>> Gerardo
>> ----- Mensaje original -----
>> > De: "Alberto Cuevas" <betocuevas(dot)net(at)gmail(dot)com>
>> > Para: pgsql-es-ayuda(at)postgresql(dot)org
>> > Enviados: Lunes, 18 de Abril 2016 13:36:18
>> > Asunto: [pgsql-es-ayuda] Restar dos campos de tipo fecha de distintos
>> registros
>> >
>> >
>> >
>> >
>> >
>> >
>> > Hola a todos necesito restar dos campos de tipo fecha de distintos
>> > registros.
>> >
>> > FechaFinal - FechaInicial
>> >
>> > | Ord. | FechaInicial | FechaFinal |
>> > | 2 | 26/02/2016 | 02/03/2016 |
>> > | 1 | 18/02/2016 | 24/02/2016 |
>> >
>> > 24/02/2016 - 26/02/2016 = 2 dias
>> >
>> > Por favor si me pueden ayudar .
>> >
>> > Saludos
>> >
>> >
>> >
>> >
>> >
>> >
>>
>

--
Cordialmente,

Ing. Hellmuth I. Vargas S.
Esp. Telemática y Negocios por Internet
Oracle Database 10g Administrator Certified Associate
EnterpriseDB Certified PostgreSQL 9.3 Associate

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gerardo Herzig 2016-04-18 19:55:56 Re: Restar dos campos de tipo fecha de distintos registros
Previous Message Alberto Cuevas 2016-04-18 18:03:22 Re: Restar dos campos de tipo fecha de distintos registros