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