在postgresql 9.1中使用AGE函数时遇到不同的结果。
查询:选择年龄('2015-02-28','2012-06-24');
结果: 2年8个月4天
查询:选择年龄('2015-03-01','2012-06-24');
结果: 2年8个月7天
查询:选择年龄('2015-02-28','2014-02-27');
结果: 1年1天
查询:选择年龄('2015-03-01','2014-02-27');
结果: 1年2天
运行查询时必须发生什么?
答案 0 :(得分:2)
文档说:
PostgreSQL的方法在计算部分月份时使用两个日期中较早的月份。例如,
age('2004-06-01', '2004-04-30')
使用4月产生1个1天,而使用5月会产生1个2天,因为5月有31天,而4月只有30个。
因此,对于您的示例,2012-06-24
是您的早期日期"而六月有30天。所以你的差异计算为24到30是6而1是7。
这不是理智的imho,但age()
函数的行为完全符合文档。
修改强>
更确切地说:age()
函数不计算日期之间的差异。不要用它来做到这一点。