首页 > 解决方案 > 仅显示周一至周日整周的数据顺序并隐藏非整周数据

问题描述

对不起,如果我在这里拍摄新手问题。

我想创建一个周报告,但是对于这个周报告,我想要从周一到周日的完整数据

健康)状况:

如果我使用 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 日星期日的TOTAL PERSON数据,并且由于本周未满,因此不显示其余数据。

谁能帮我怎么做?

非常感谢!

标签: sqlsql-server

解决方案


对于 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 天的 testet 和非常有限的测试数据集,但应该可以工作)


推荐阅读