使用age和extract计算两个日期之间的差异会在Postgresql中给出不同的结果

Rya*_*yan 1 date amazon-redshift

我正在使用Postgresql(在Amazon Redshift上),我需要计算两个日期之间的差异,然后在公式中使用该值来计算比率,因此需要将日期差异转换为数值,最好是浮点数或双精度.

我有两个日期:2017年1月1日和2014年1月1日.我需要在天数中找到这两个日期之间的差异.

当我使用年龄函数时,我获得了1080天:

select age('2017-01-01','2014-01-01')
Run Code Online (Sandbox Code Playgroud)

但是,由于age返回一个间隔,我需要使用数字结果,我使用EXTRACT转换最终值.我选择了纪元,因为我无法找到EXTRACT的任何其他值,这将产生两个日期之间的时间单位数.此公式产生1095.75天(除数是一天中的秒数):

select extract(epoch from age('2017-01-01','2014-01-01'))/86400
Run Code Online (Sandbox Code Playgroud)

为什么在使用年龄与使用提取物时,我会得到19.75天的差异?

Clo*_*eto 5

你试过了吗

select '2017-01-01'::date - '2014-01-01'::date;
Run Code Online (Sandbox Code Playgroud)

两个dates 之间的差异是整数天数