gpt4 book ai didi

postgresql - 在 PostgreSQL 中计算 AGE 时行为不一致?

转载 作者:行者123 更新时间:2023-11-29 12:12:02 28 4
gpt4 key购买 nike

我在 postgresql 9.1 中使用 AGE 函数时遇到了不同的结果。

  1. 不正确。当当前日期从 2 月 28 日更改为 3 月 1 日时,会增加两天。

查询:选择AGE ('2015-02-28', '2012-06-24');
结果:2 年 8 个月 4 天

查询:选择AGE ('2015-03-01', '2012-06-24');
结果:2 年 8 个月 7 天

  1. 从 2014-02-27 开始计算年龄时似乎是正确的。此处未添加额外的天数。

查询:选择AGE ('2015-02-28', '2014-02-27');
结果:1 年 1 天

查询:选择AGE ('2015-03-01', '2014-02-27');
结果:1 年 2 天

运行查询时必须发生什么?

最佳答案

文档说:

PostgreSQL's approach uses the month from the earlier of the two dates when calculating partial months. For example, age('2004-06-01', '2004-04-30') uses April to yield 1 mon 1 day, while using May would yield 1 mon 2 days because May has 31 days, while April has only 30.

因此对于您的示例,2012-06-24 是您的“较早日期”,而 6 月有 30 天。所以你的差异计算为 24 到 30 是 6,到 1 是 7。

恕我直言,这不是理智的,但是 age() 函数的行为完全符合文档的规定。

编辑:

更准确地说:age() 函数计算日期之间的差异。不要用它来做那件事。

关于postgresql - 在 PostgreSQL 中计算 AGE 时行为不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29122424/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com