抱歉,如果我在这里拍摄新手问题。
我想创建每周报告,但对于此每周报告,我需要周一到周日的完整数据
条件:
- 仅最近 4 周
- 显示整周(周一至周日(
- 如果结果不是整周,则隐藏结果
如果我使用 getdate -14,如果我在周三访问数据,他们将从 2 周前的星期三而不是上周一开始计算上周。同时,我希望报告仅显示整周。
任何人都可以分享如何在SQL中做到这一点吗?
在这里,我提供示例数据:
Column name = DATE -- Column name: TOTAL_PERSON
- Fri, 1 Jun 2018 -- 10
- Sat, 2 Jun 2018 -- 4
- Sun, 3 Jun 2018 -- 12
- Mon, 4 Jun 2018 -- 15
- Tue, 5 Jun 2018 -- 10
- Wed, 6 Jun 2018 -- 3
- Thu, 7 Jun 2018 -- 1
- Fri, 8 Jun 2018 -- 13
- Sat, 9 Jun 2018 -- 9
- Sun, 10 Jun 2018 -- 23
- Mon, 11 Jun 2018 -- 5
- Tue, 12 Jun 2018 -- 3
- Wed, 13 Jun 2018 -- 1
- Thu, 14 Jun 2018 -- (TODAY)
在这种情况下,如果我在2018年6月6日星期四访问,我想仅获取从2018年6月4日星期一到2018年6月10日星期日的总人数数据,并且由于本周未满而不显示其余数据。
谁能帮我怎么做?
多谢!
我想你想要:
where datediff(week, date, getdate()) <= 2
这将计算两个日期之间的周边界数,因此它返回整周。
对于 MySQL,您可以使用这样的选择:
SELECT * FROM `myDB` WHERE `Date`
BETWEEN DATE_SUB(NOW()-INTERVAL DATE_FORMAT(CURRENT_DATE, '%w') DAY, INTERVAL 28 DAY)
AND NOW()- INTERVAL DATE_FORMAT(CURRENT_DATE, '%w') DAY
这使用将本周的当前日期转换为数字并减去此数字以获得最后一个星期日的功能。 从那里,我们选择 28 天的间隔。
(只有 14 天的测试集和非常有限的测试数据集,但应该可以工作(