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

2017-05-15 12:07 GMT-05:00 Daymel Bonne Solís <daymelbo...@gmail.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<jfgonza...@gmail.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

Responder a