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

按时间段分组记录:基于用户选择时间范围按两周分组的SQL实现

按两周时间段分组指定时间范围的SQL实现

针对你需要将用户选定的时间范围按两周为单位分组的需求,我结合你给出的示例场景(2018年5月4日至5月31日),整理了两种实用的SQL解决方案,适配不同的分组逻辑:


方案一:使用日期维度表(推荐用于频繁查询)

如果你的数据库中有预定义的日期维度表(比如dbo.DateDim),可以直接用下面的代码快速生成分组结果:

-- 声明时间范围变量
DECLARE @StartDate DATE = '20180504', 
        @EndDate DATE = '20180531', 
        @ToDate DATE = DATEADD(DAY, 1, @EndDate);

-- 生成日期并按两周分组
SELECT 
    dd.Date,
    -- 按自然周对齐的两周分组(每两个日历周为一组)
    CEILING(DATEPART(WEEK, dd.Date) / 2.0) AS TwoWeekGroup,
    -- 从起始日期开始的连续两周分组(忽略自然周分界)
    FLOOR(DATEDIFF(DAY, @StartDate, dd.Date) / 14.0) + 1 AS TwoWeekGroup_FromStart
FROM 
    dbo.DateDim dd
WHERE 
    dd.Date >= @StartDate 
    AND dd.Date < @ToDate
ORDER BY 
    dd.Date;

代码解释:

  • 变量部分:@ToDate是结束日期加1天,用<条件查询可以避免因日期包含时间部分导致的边界遗漏,确保@EndDate当天的数据被包含。
  • 两种分组逻辑:
    • TwoWeekGroup:基于日历周的分组,把周数除以2后向上取整,适合需要和自然周对齐的场景(比如每周一到周日为一周,两周就是连续两个完整周)。
    • TwoWeekGroup_FromStart:从你指定的起始日期开始,每14天为一组,不管自然周的起始日,适合需要严格按起始点计算周期的业务场景。

方案二:递归CTE生成临时日期范围

如果没有日期维度表,可以用递归CTE动态生成指定范围内的所有日期,再进行分组:

DECLARE @StartDate DATE = '20180504', 
        @EndDate DATE = '20180531';

WITH DateRange AS (
    -- 起始日期
    SELECT @StartDate AS Date
    UNION ALL
    -- 递归生成后续日期
    SELECT DATEADD(DAY, 1, Date)
    FROM DateRange
    WHERE Date < @EndDate
)
SELECT 
    Date,
    CEILING(DATEPART(WEEK, Date) / 2.0) AS TwoWeekGroup,
    FLOOR(DATEDIFF(DAY, @StartDate, Date) / 14.0) + 1 AS TwoWeekGroup_FromStart
FROM DateRange
ORDER BY Date
OPTION (MAXRECURSION 0); -- 解除递归次数限制,支持超过100天的时间范围

注意事项:

  • 如果你的时间范围超过100天,必须加上OPTION (MAXRECURSION 0),否则SQL Server会因为默认递归次数限制报错。
  • 对于SQL Server 2022及以上版本,可以用GENERATE_SERIES替代递归CTE,代码更简洁:
    SELECT 
        DATEADD(DAY, value, @StartDate) AS Date,
        CEILING(DATEPART(WEEK, DATEADD(DAY, value, @StartDate)) / 2.0) AS TwoWeekGroup,
        FLOOR(value / 14.0) + 1 AS TwoWeekGroup_FromStart
    FROM GENERATE_SERIES(0, DATEDIFF(DAY, @StartDate, @EndDate))
    ORDER BY Date;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:14:05