日期间的双精度月数postgres

问题描述:

是否可以计算两个日期之间的月数作为双精度而不是整数?例如,2016-05-042015-03-21之间的差异可能类似于13.4213.43个月?日期间的双精度月数postgres

+0

0.42或** **其中0.43个月? –

+0

我并不特别在乎,它可能是30天或31天,29天或28天中的13天。只要它是整月数+大概一个月的数量的近似部分,我就满意了。 –

有很多方法可以计算出类似的结果,并且根据用于计算的规则,您将得到不同的结果。

以下方式为您提供了两个日期之间的数字在一定时间内每年的12ths的:

select (date'2016-05-04' - date'2015-03-21')/365.0 * 12 

在13.48以上结果。

下面的方式给出了一个或许更准确的数字(13.47),但要复杂得多,并且导致最小差异:

select extract('years' from age) * 12 + extract('months' from age) + extract('days' from age)/30 
from (select age('2016-05-04'::timestamp, '2015-03-21'::timestamp)) a