From: | Julio Cesar Rodriguez Dominguez <jurasec(at)gmail(dot)com> |
---|---|
To: | Miguel Angel <mvillagomez(at)sayab(dot)com(dot)mx> |
Cc: | Lista Postgres <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Diferencia de tiempo |
Date: | 2009-05-20 14:54:44 |
Message-ID: | 925902880905200754h39ca5c3ahd31298e7e345d1dd@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El 20 de mayo de 2009 8:16, Miguel Angel <mvillagomez(at)sayab(dot)com(dot)mx>escribió:
> Buenos días.
>
> Quisiera preguntar si hay forma de saber la diferencia de tiempo que hay
> entre dos fechas expresada en meses como por ejemplo:
>
> Si tengo la fecha de inicio '2008-12-15' y la fecha '2009-01-01'
> quisiera poder obtener el resultado de 1 mes de diferencia; no es un
> resultado correcto en diferencia de días pero si en meses y eso es lo
> que necesito.
>
> Hay forma de poder obtener algo así en Postgres o es necesario cree una
> función o lógica para ello?
>
> Soñando algo como:
> Fecha_final | Fecha_inicial | diferencia_meses
> '2010-01-01' | '2008-12-31' | 13
> '2009-02-15' | '2008-12-31' | 2
> '2011-05-30' | '2008-02-20' | 39
>
>
Podrias hacer uso de la función age, pero antes tienes que convertir tus
fechas para ponerlas al dia de inicio del mes, por ejemplo:
postgres(at)test[localhost]=# select age(date '2009-01-01', date '2008-12-01');
age
-------
1 mon
(1 fila)
postgres(at)test[localhost]=# select age(date '2010-01-01', date '2008-12-01');
age
--------------
1 year 1 mon
(1 fila)
postgres(at)test[localhost]=# select age(date '2009-02-01', date '2008-12-01');
age
--------
2 mons
(1 fila)
postgres(at)test[localhost]=# select age(date '2011-05-01', date '2008-02-01');
age
----------------
3 years 3 mons
(1 fila)
Solo faltaria hacer la converisión de años a meses.
From | Date | Subject | |
---|---|---|---|
Next Message | Miguel Angel | 2009-05-20 15:05:10 | Re: Diferencia de tiempo |
Previous Message | Emanuel Calvo Franco | 2009-05-20 14:35:42 | Re: The database cluster was initialized without HAVE_INT64_TIMESTAMP |