PostgreSQL 从时间戳中提取年份,然后应用间隔计算

问题描述

我想过滤数据集以包含 created_date >= 当前年份加上 5 整年之前的所有内容。如果我今天运行这个,我想要任何带有 created_date >= 01/01/2016 (2021 - 5 = 2016)

where extract(year from created_date) >= extract(year from current_date) - interval '5 years'

当然这不适用于双精度数据类型。有什么想法吗?谢谢。

解决方法

使用 date_trunc() 将日期“四舍五入”到一月一日。

where date_trunc('year',created_date) >= date_trunc('year',current_timestamp) - interval '5 years'

但是“我想要任何带有 created_date >= 01/01/2016”的东西似乎表明您可能想要:

where created_date >= date_trunc('year',current_timestamp) - interval '5 years'