如何从postgres的间隔中提取年份
Posted
技术标签:
【中文标题】如何从postgres的间隔中提取年份【英文标题】:How to extract year from interval in postgres 【发布时间】:2020-02-06 07:29:07 【问题描述】:我发现下面一行:
select extract(year from '2021-01-01'::timestamp - '2020-01-01');
返回 0。
即使我们走得更远:
select extract(year from '2021-01-01'::timestamp - '2010-01-01');
结果还是0。
我理解这背后的原因。如果我们运行查询来检查连续新年之间的间隔:
select '2021-01-01'::timestamp - '2020-01-01';
我们得到以下结果:
0 年 0 月 366 天 0 小时 0 分钟 0.00 秒
1 year
不够精确 - 它可能意味着 365 或 366 天。
问题:有没有一种优雅的方法可以从两个时间戳之间的差值中检索年份计数?类似于第一个查询,我希望结果为 1。
【问题讨论】:
【参考方案1】:你应该使用AGE
而不是区别:
SELECT EXTRACT(YEAR FROM AGE('2021-01-01'::TIMESTAMP, '2010-01-01'::TIMESTAMP));
date_part
-----------
11
见:https://www.postgresql.org/docs/current/functions-datetime.html
减去参数,产生一个使用年和月而不是天数的“符号”结果
【讨论】:
以上是关于如何从postgres的间隔中提取年份的主要内容,如果未能解决你的问题,请参考以下文章
从 postgres 表中提取 json 数组给出错误:无法从标量中提取元素