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

如何用SQL查询日期列的最大周及往前4周数据?

解决周粒度日期表取最大日期及往前4周数据的问题

你的需求是从周粒度日期表中,获取最大日期以及往前推4周的日期(共5条记录),之前使用DATEADD(DAY,-7*5,DATE_COLUMN)的方式逻辑有误,导致未得到预期结果。

正确方案1:筛选原表中符合范围的日期

先获取表中的最大日期,再筛选出大于等于「最大日期减28天(4周)」的记录,SQL如下:

SELECT Date_Column
FROM your_table_name
WHERE Date_Column >= DATEADD(DAY, -28, (SELECT MAX(Date_Column) FROM your_table_name))
ORDER BY Date_Column DESC;

该语句会返回原表中从最大日期往前推4周内的所有周日期,和你的预期结果一致。

正确方案2:递归生成目标日期(适用于原表可能缺周的情况)

如果需要直接生成这5个周日期,不管原表是否存在缺失,可使用递归CTE:

WITH DateSeries AS (
    -- 起始为表中最大日期
    SELECT MAX(Date_Column) AS week_date
    FROM your_table_name
    UNION ALL
    -- 每次往前推7天,直到生成够5个日期
    SELECT DATEADD(DAY, -7, week_date)
    FROM DateSeries
    WHERE week_date > DATEADD(DAY, -28, (SELECT MAX(Date_Column) FROM your_table_name))
)
SELECT week_date AS Date_Column
FROM DateSeries
ORDER BY week_date DESC;

你之前的问题所在

DATEADD(DAY,-7*5,DATE_COLUMN)是对表中每一条日期记录都减去35天,而不是筛选出符合范围的日期,这和你的需求逻辑不符,所以无法得到想要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:27:34