You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中如何查询两个指定日期范围内的数据

PostgreSQL查询上一年指定日期区间的方案

思路评估

整体方向是对的,核心需求是先定位上一年的时间锚点再框定区间,只是具体写法不符合PostgreSQL的日期语法规则,不需要手动拼接1月1日的字符串,用内置的日期截断函数即可实现。

常用场景实现代码

场景1:查询上一整年(去年1月1日~去年12月31日)的数据

推荐用左闭右开的条件代替BETWEEN,避免漏判带时分秒的日期字段:

SELECT * 
FROM my_table 
WHERE date >= date_trunc('year', now() - INTERVAL '1 year')
  AND date < date_trunc('year', now());

说明:date_trunc('year', 时间值) 会自动将时间截断到对应年份的1月1日0点,比如当前是2024年,该函数取去年的时间锚点就会返回2023-01-01 00:00:00。

场景2:查询去年1月1日到去年某个固定月/日的数据

比如要取去年1月1日到去年10月5日的所有数据,直接在年初锚点基础上加时间偏移即可:

SELECT * 
FROM my_table 
WHERE date BETWEEN date_trunc('year', now() - INTERVAL '1 year')
                AND (date_trunc('year', now() - INTERVAL '1 year') + INTERVAL '9 months 4 days');

可根据需要调整INTERVAL后面的月、日数值匹配你要的截止日期。

场景3:查询去年1月1日到去年的今天的数据

如果截止日期是去年的当前月日,直接减1年即可:

SELECT * 
FROM my_table 
WHERE date BETWEEN date_trunc('year', now() - INTERVAL '1 year')
                AND (now()::DATE - INTERVAL '1 year');

内容的提问来源于stack exchange,提问作者Jenny C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:06:03