RE: Restar dos campos de tipo fecha de distintos registros

From: MKHotmail <mcanchas(at)hotmail(dot)com>
To: "'Alberto Cuevas'" <betocuevas(dot)net(at)gmail(dot)com>, "'Gerardo Herzig'" <gherzig(at)fmed(dot)uba(dot)ar>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Restar dos campos de tipo fecha de distintos registros
Date: 2016-04-18 20:36:21
Message-ID: DUB405-EAS17991CD05912FB02E6FCF74D76B0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

No tengo Postgresql a la mano. No obstante la idea podría ser la misma…

CREATE CURSOR l( ORD N(2), FI DATE, FF DATE )

INSERT INTO l values( 1, DATE(2015,10,01) , DATE(2015,12,01) )

INSERT INTO l values( 2, DATE(2015,08,01) , DATE(2015,10,01) )

INSERT INTO l values( 3, DATE(2015,06,01) , DATE(2015,08,01) )

INSERT INTO l values( 4, DATE(2015,05,01) , DATE(2015,06,01) )

INSERT INTO l values( 5, DATE(2015,04,01) , DATE(2015,05,01) )

INSERT INTO l values( 6, DATE(2015,03,01) , DATE(2015,04,01) )

INSERT INTO l values( 7, DATE(2015,02,01) , DATE(2015,03,01) )

INSERT INTO l values( 8, DATE(2015,01,01) , DATE(2015,01,28) )

INSERT INTO l values( 9, DATE(2014,12,01) , DATE(2015,01,01) )

INSERT INTO l values(10, DATE(2014,11,01) , DATE(2014,12,01) )

SELECT ff, ( select FI FROM l WHERE ord = 1), FF - ( select FI FROM l WHERE ord = 1) FROM l WHERE ord = 2 ;

union all ;

SELECT ff, ( select FI FROM l WHERE ord = 2), FF - ( select FI FROM l WHERE ord = 2) FROM l WHERE ord = 3;

union all ;

SELECT ff, ( select FI FROM l WHERE ord = 3), FF - ( select FI FROM l WHERE ord = 3) FROM l WHERE ord = 4;

union all ;

SELECT ff, ( select FI FROM l WHERE ord = 4), FF - ( select FI FROM l WHERE ord = 4) FROM l WHERE ord = 5;

union all ;

SELECT ff, ( select FI FROM l WHERE ord = 5), FF - ( select FI FROM l WHERE ord = 5) FROM l WHERE ord = 6;

union all ;

SELECT ff, ( select FI FROM l WHERE ord = 6), FF - ( select FI FROM l WHERE ord = 6) FROM l WHERE ord = 7;

union all ;

SELECT ff, ( select FI FROM l WHERE ord = 7), FF - ( select FI FROM l WHERE ord = 7) FROM l WHERE ord = 8;

union all ;

SELECT ff, ( select FI FROM l WHERE ord = 8), FF - ( select FI FROM l WHERE ord = 8) FROM l WHERE ord = 9;

union all ;

SELECT ff, ( select FI FROM l WHERE ord = 9), FF - ( select FI FROM l WHERE ord = 9) FROM l WHERE ord = 10;

De: pgsql-es-ayuda-owner(at)postgresql(dot)org [mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de Alberto Cuevas
Enviado el: lunes, 18 de abril de 2016 01:03 p.m.
Para: Gerardo Herzig <gherzig(at)fmed(dot)uba(dot)ar>
CC: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Restar dos campos de tipo fecha de distintos registros

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 <mailto: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 <mailto: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
>
>
>
>
>
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2016-04-18 20:50:29 Re: Restar dos campos de tipo fecha de distintos registros
Previous Message Hellmuth Vargas 2016-04-18 20:13:38 Re: Restar dos campos de tipo fecha de distintos registros