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

如何在PostgreSQL中生成基于指定月末重复的日期序列

解决PostgreSQL生成重复月末日期的问题

要实现每个月末日期重复出现的结果,你可以通过CROSS JOIN另一个generate_series来为每个月末日期生成重复行。

修改后的查询语句

假设你希望每个月末日期重复3次(可根据需求自由调整重复次数):

SELECT
    -- 简化的月末日期计算方式,与原逻辑等价
    ((DATE_TRUNC('month', ld) + '1 month'::INTERVAL)::DATE - 1) AS pe_produc
FROM
    GENERATE_SERIES(TIMESTAMP'2022-01-31', TIMESTAMP'2022-03-31', INTERVAL'1 month') AS ld
-- 关联生成重复次数的序列,参数范围决定重复次数
CROSS JOIN
    GENERATE_SERIES(1, 3) AS repeat_count;

关键说明

  • 原查询已经能正确生成目标月末日期,通过CROSS JOIN第二个generate_series,会将每个月末日期与重复序列的每一行做笛卡尔积,从而得到重复的日期行。
  • 你可以随时调整第二个generate_series的参数:比如GENERATE_SERIES(1, 5)会让每个日期重复5次,GENERATE_SERIES(1, 10)则重复10次。
  • 月末日期的计算简化写法(DATE_TRUNC('month', ld) + INTERVAL '1 month')::DATE - 1,和原查询逻辑完全一致,但可读性更强。

示例结果

执行上述查询后,返回结果如下:

pe_produc
----------
2022-01-31
2022-01-31
2022-01-31
2022-02-28
2022-02-28
2022-02-28
2022-03-31
2022-03-31
2022-03-31

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:15:35