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

如何实现选定日期范围与当月及上月同期的数据对比?

用date_part实现当月与上月同期数据对比的方案

完全可以通过date_part函数实现这个需求,结合日期截断和运算就能精准定位上月同期的日期范围,进而输出对比结果。

核心思路

  • 用date_part('day', 日期)提取选定日期的日份(比如12月1日提取1,12月15日提取15)
  • 用date_trunc('month', 日期)获取当月第一天,减去1个月得到上月第一天
  • 上月第一天加上(日份-1)天,就能得到上月同期的对应日期

示例SQL实现

假设用户选定的当月日期范围是2022-12-01至2022-12-15,以下是统计并输出对比结果的SQL:

WITH date_ranges AS (
    SELECT
        -- 当月日期范围
        '2022-12-01'::date AS current_start,
        '2022-12-15'::date AS current_end,
        -- 计算上月同期起始日期
        (date_trunc('month', '2022-12-01'::date) - INTERVAL '1 month') + (date_part('day', '2022-12-01'::date) - 1) * INTERVAL '1 day' AS prev_start,
        -- 计算上月同期结束日期
        (date_trunc('month', '2022-12-15'::date) - INTERVAL '1 month') + (date_part('day', '2022-12-15'::date) - 1) * INTERVAL '1 day' AS prev_end
)
-- 输出上月同期统计结果
SELECT 'Count X ' || to_char(prev_start, 'DD-MM-YYYY') || ' to ' || to_char(prev_end, 'DD-MM-YYYY') AS result
FROM date_ranges
UNION ALL
-- 输出当月统计结果
SELECT 'Count X ' || to_char(current_start, 'DD-MM-YYYY') || ' to ' || to_char(current_end, 'DD-MM-YYYY') AS result
FROM date_ranges;

执行后会得到如下输出:

Count X 01-11-2022 to 15-11-2022
Count X 01-12-2022 to 15-12-2022

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 13:50:46