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

如何用PostgreSQL查询上月5日至本月5日的日期集合

正确的PostgreSQL查询方案

你之前的查询问题在于,date_trunc('month', current_date-1)返回的是上月第一天,date_trunc('month', current_date)返回的是本月第一天,范围完全不符合你要的「上月5日至本月5日」需求,以下是两种可行的正确方案:

方案一:基于日期截断与间隔计算

SELECT "DATE" 
FROM Db_name 
WHERE "DATE" BETWEEN 
    (date_trunc('month', current_date) - INTERVAL '1 month') + INTERVAL '4 days'
    AND 
    (date_trunc('month', current_date) + INTERVAL '4 days');

逻辑说明:

  • date_trunc('month', current_date) 获取当前月份的第一天(比如2022-08-16时为2022-08-01)
  • 减去1个月得到上月第一天,再加4天就得到上月5日
  • 本月第一天加4天得到本月5日

方案二:使用make_date构造目标日期(可读性更强)

SELECT "DATE" 
FROM Db_name 
WHERE "DATE" BETWEEN 
    make_date(
        extract(year from current_date - INTERVAL '1 month')::integer,
        extract(month from current_date - INTERVAL '1 month')::integer,
        5
    )
    AND 
    make_date(
        extract(year from current_date)::integer,
        extract(month from current_date)::integer,
        5
    );

逻辑说明:

  • 通过current_date - INTERVAL '1 month'定位到上月时间,提取年、月后用make_date直接构造上月5日
  • 提取当前年、月,用make_date构造本月5日

两种方案都能适配任意当前日期的场景,比如当前是2022-08-03时,依然会返回2022-07-05至2022-08-05的所有日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:15:45