【发布时间】:2018-06-04 07:34:27
【问题描述】:
我在 PostgreSQL 9.6 转弯日期计算中遇到了我的 SQL 代码的一些意外行为。在分析时,我发现 Postgres 不会总是返回相同的值返回 n 天,然后使用 age() 计算持续时间。
考虑这段代码:我们将某一天设置为“基数”,返回 45 天,然后计算持续时间。
WITH basedate AS (SELECT '2018-05-01'::date AS b),
myperiod AS (SELECT (basedate.b - interval '45 days') AS "startDate",
basedate.b AS "endDate" FROM basedate)
SELECT age("endDate","startDate") FROM myperiod;
我希望这个查询总是得到45 days。但是,如果我将basedate 更改为2018-06-01,我将得到44 days。
为什么会这样?
我的猜测是,这与 May 有 31 天有关。但是,我无法准确解释原因,因为如果我将 45 days 更改为 15 days,2018-05-01 和 2018-06-01 将导致相同的持续时间。
【问题讨论】:
标签: sql postgresql datetime