Re: [pgsql-es-ayuda] calculo preciso de años meses y dias

From: felix gonzales <jfgonzales(at)gmail(dot)com>
To: Daymel Bonne Solís <daymelbonne(at)gmail(dot)com>, PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: [pgsql-es-ayuda] calculo preciso de años meses y dias
Date: 2017-05-15 18:39:11
Message-ID: CA+u4V5S69oXBWyu_2jAc-8ArGfJUgniSTVR9tSCncfb8+qV21w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

gracias por el análisis y la recomendación Daymel.

2017-05-15 12:07 GMT-05:00 Daymel Bonne Solís <daymelbonne(at)gmail(dot)com>:

> Hola nuevamente Felix:
>
> El cálculo de diferencias entre fechas dados en meses y días es un poco
> complicado, ya que los resultados pueden ser un poco confusos.
>
> Hay que tener en cuenta que la unidad meses no es una cantidad fija, si
> hacemos el cálculo se puede deducir el resultado que arroja la ejecución de select
> AGE('01-05-2017','15-02-2017')
>
> Marzo (mes 03) tiene 31 dias
> Abril (mes 04) tiene 30 dias
>
> Ahora, la diferencia en días entre las dos fechas se puede obtener de la
> siguiente forma:
>
> dbonne=# select (extract(epoch from timestamptz '01-05-2017') -
> extract(epoch from timestamptz '15-02-2017')) / 60 / 60 / 24;
> ?column?
> ----------
> 75
> (1 fila)
>
> Finalmente 75 - 61 = 14. Por eso el resultado son 2 meses y 14 días.
>
> Por otro lado, hay que tener especial cuidado con la función
> justify_interval que menciona Diego, esta función maneja los intervalos de
> meses de 30 días, por lo que:
>
> dbonne=# select justify_interval('30 days');
> justify_interval
> ------------------
> 1 mon
> (1 fila)
>
> dbonne=# select justify_interval('1 mon - 1 hour');
> justify_interval
> ------------------
> 29 days 23:00:00
> (1 fila)
>
> Sin embargo:
>
> dbonne=# select justify_interval('31 days');
> justify_interval
> ------------------
> 1 mon 1 day
> (1 fila)
>
> Finalmente mi recomendación es uses siempre la diferencia en días. No
> menciono por cierto, el problema que adiciona los usos horarios que tienen
> Horario de Verano, ese es otro tema ;).
>
> Saludos.
>
> El 15 de mayo de 2017, 08:16, felix gonzales<jfgonzales(at)gmail(dot)com>
> escribió:
>
>> buen día lista,
>>
>> Necesito obtener años meses y días precisos. utilizando la función AGE
>> tengo la dificultad que la primera y ultima linea me devuelve lo mismo,
>> alguna alternativa?
>>
>> select AGE('29-04-2017','15-02-2017');
>> select AGE('30-04-2017','15-02-2017');
>> select AGE('01-05-2017','15-02-2017');
>>
>> cualquier comentario bienvenido.
>>
>> --
>> Felix Gonzales
>>
>>
>

--
Felix Gonzales

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message felix gonzales 2017-05-15 19:04:57 Re: [pgsql-es-ayuda] calculo preciso de años meses y dias
Previous Message felix gonzales 2017-05-15 18:37:41 Re: [pgsql-es-ayuda] calculo preciso de años meses y dias