MariaDB如何查询两周前周五起连续7天的staff列统计数据
两周前周五起连续7天staff列计数统计方案
核心实现逻辑
- 第一步先计算时间区间边界:先定位到两周前的周五零点作为起始时间,取起始时间往后7天的完整区间作为统计范围
- 第二步按你需要的时段维度(按天/按小时等)分组,统计对应分组下staff列的计数
MySQL语法实现代码
-- 定义统计区间起始:两周前的周五零点 SET @stat_start = DATE_SUB( DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) + 3 DAY), INTERVAL 2 WEEK ); -- 定义统计区间结束:起始时间往后推7天,用开区间避免时间戳边界误差 SET @stat_end = DATE_ADD(@stat_start, INTERVAL 7 DAY); -- 统计查询,可根据实际需求调整分组维度 SELECT DATE(created_at) AS 统计日期, -- 如需去重统计staff可替换为 COUNT(DISTINCT staff) COUNT(staff) AS staff数量 FROM -- 替换为你实际的表名 work_records WHERE created_at >= @stat_start AND created_at < @stat_end -- 分组维度和SELECT中的时间维度保持一致即可 GROUP BY 统计日期 ORDER BY 统计日期;
其他数据库方言适配说明:
- PostgreSQL:将
CURDATE()替换为CURRENT_DATE,WEEKDAY函数替换为EXTRACT(DOW FROM CURRENT_DATE)做对应换算即可- SQL Server:对应使用
GETDATE()、DATEPART函数调整时间计算逻辑即可
内容的提问来源于stack exchange,提问作者Gunsela
相关产品推荐
相关产品推荐

