sql - 周三至周三报告

标签 sql sql-server

我正在尝试根据周三至周三的报告周生成一份报告。 我发现很多例子都说明了获取正确的日期,例如:

DATEADD(DAY, -5, DATEADD(WEEK, DATEDIFF(WEEK, 0, getdate()), 0))

问题是这些似乎只适用于当前周。上面的示例给出了 15/11/17,这对于今天 (24/11/2017) 是正确的,但在周日 (26/11/2017) 是不正确的,此时会得到 22/11/2017。

如果我在2017年11月22日至28日(周三至周二)期间查看报告,我应该会看到2017年11月15日至22日期间的报告

2011年11月29日和2017年12月5日之间,报告应为2017年11月22日至29日

感谢任何帮助!

最佳答案

试试这个方法

SELECT
  *,
  CASE WHEN [wensday]>reportDate THEN DATEADD(WEEK,-2,[wensday]) ELSE DATEADD(WEEK,-1,[wensday]) END [from date],
  CASE WHEN [wensday]>reportDate THEN DATEADD(WEEK,-1,[wensday]) ELSE [wensday] END [to date]
FROM
  (
    SELECT
      reportDate,
      -- monday of this week
      --DATEADD(DAY,DATEDIFF(DAY,0,reportDate)/7*7,0) [monday],
      -- wensday of this week
      DATEADD(DAY,2,DATEADD(DAY,DATEDIFF(DAY,0,reportDate)/7*7,0)) [wensday]
    FROM
      (
        SELECT CAST('20171115' AS date) reportDate
        UNION ALL
        SELECT CAST('20171121' AS date) reportDate
        UNION ALL
        SELECT CAST('20171122' AS date) reportDate
        UNION ALL
        SELECT CAST('20171123' AS date) reportDate
        UNION ALL
        SELECT CAST('20171124' AS date) reportDate
        UNION ALL
        SELECT CAST('20171129' AS date) reportDate
        UNION ALL
        SELECT CAST('20171205' AS date) reportDate
      ) test
  ) q

内联算法

DECLARE @reportDate date=GETDATE()

DECLARE @Wensday date=DATEADD(DAY,2,DATEADD(DAY,DATEDIFF(DAY,0,@reportDate)/7*7,0))
DECLARE @FromDate date=CASE WHEN @Wensday>@reportDate THEN DATEADD(WEEK,-2,@Wensday) ELSE DATEADD(WEEK,-1,@Wensday) END
DECLARE @ToDate date=DATEADD(WEEK,1,@FromDate)

SELECT @reportDate,@Wensday,@FromDate,@ToDate

关于sql - 周三至周三报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47466213/

相关文章:

SQL Server 2005 : using OR operator with LIKE operator

php - 即使没有重复条目 php 我的管理员显示重复条目错误

sql - 对多列进行 DISTINCT 计数

sql-server - 我在 SSRS 中有一个 DD-MM-YYYY 格式的日期时间参数如何将日期时间参数的格式更改为 DD-MMM-YYYY

mysql - SQL 查询 - 按工作日从两个表中计数

SQL连接具有特定条件的两个表

sql - sql server management studio中语法高亮的分类?

sql - 如何在非远程客户端系统中使用 bcp

sql-server - 对于多行最高效(快速)的 T-SQL 删除?

SQL 字符串函数