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

编写存储过程统计日志表近6个月每月记录数

问题

我有一张包含TimeStamp和Action列的日志表,表数据示例如下:

TimeStampAction
2022-10-13 16:24:42.803...
2022-10-12 16:24:42.703...
2022-10-12 10:23:42.809...
2022-10-11 16:21:42.903...
2022-10-10 10:24:42.803...

需要编写一个存储过程,返回近6个月每个月的记录数量,预期输出格式如下:

Monthrecords
2022-10366
2022-09193
2022-08276
2022-07233
2022-06215
2022-05117

我已编写初始代码如下:

DECLARE @monthly_records TABLE (Month varchar(50), Records int) 
DECLARE @cnt INT = 0;

WHILE @cnt < 6
BEGIN
    INSERT INTO @monthly_records (Month, Records) 
    VALUES (? , ?)

    SET @cnt = @cnt + 1;
END

SELECT * 
FROM @monthly_records

请完善该代码以实现需求。

解决方案

以下是完善后的存储过程代码,可直接实现近6个月记录数统计的需求:

CREATE PROCEDURE GetLastSixMonthsRecords
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @monthly_records TABLE (Month varchar(7), Records int);
    DECLARE @cnt INT = 0;
    -- 获取当前月份的第一天作为基准点
    DECLARE @currentMonthStart DATE = DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1);

    WHILE @cnt < 6
    BEGIN
        -- 计算当前循环对应的目标月份起始日期
        DECLARE @targetMonthStart DATE = DATEADD(MONTH, -@cnt, @currentMonthStart);
        -- 格式化为yyyy-MM的月份字符串
        DECLARE @monthStr VARCHAR(7) = FORMAT(@targetMonthStart, 'yyyy-MM');

        -- 统计该月份的记录总数
        DECLARE @recordCount INT;
        SELECT @recordCount = COUNT(*)
        FROM YourLogTable -- 此处替换为你的日志表实际名称
        WHERE TimeStamp >= @targetMonthStart
          AND TimeStamp < DATEADD(MONTH, 1, @targetMonthStart);

        -- 插入统计结果,用ISNULL确保无记录时返回0
        INSERT INTO @monthly_records (Month, Records)
        VALUES (@monthStr, ISNULL(@recordCount, 0));

        SET @cnt = @cnt + 1;
    END

    -- 按月份倒序输出,匹配预期的最新到最旧顺序
    SELECT Month, Records
    FROM @monthly_records
    ORDER BY Month DESC;
END

核心逻辑说明

  • 以当前月份第一天为基准,通过循环依次生成近6个月的起始日期
  • 使用TimeStamp >= 当月第一天 AND TimeStamp < 下月第一天的条件,精准锁定每个月的记录范围,避免跨时间点的统计误差
  • 用FORMAT统一月份的输出格式为yyyy-MM,完全匹配预期输出要求
  • 处理无记录的月份时,用ISNULL返回0而非NULL,保证结果完整性

注意:需将代码中的YourLogTable替换为你的日志表实际名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:10:33