仅显示星期一至星期日整周的数据顺序,并隐藏非整周的数据

时间:2018-08-10 10:07:20

标签: sql sql-server

抱歉,如果我在这里拍摄新手问题。

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

条件:

  • 仅过去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日星期日获取总人数数据,而不显示其余数据因为一周还没满。

有人可以帮我怎么做吗?

非常感谢!

2 个答案:

答案 0 :(得分:0)

我想你想要

where datediff(week, date, getdate()) <= 2

这将计算两个日期之间的周边界数,因此它将返回整周。

答案 1 :(得分:0)

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