SQL Server 2012 - 星期六到星期五

SQL Server 2012 - Week Date Sat To Friday

我想我真的很接近得到这个,但我只是偏离了目标!

我正在尝试创建一个日期(报告截止日期),允许我每周周六到周五 select。 以上周为例,下面的代码为我提供了日期范围为 24/07/2016 至 30/07/2016 的 29/07/2016 但是我希望日期范围为 23/07/2016 至 29/ 07/2016 这可能吗?

    DATEADD(WEEK,DATEDIFF(WEEK,0,[DateCreated]),4) AS [WeekCreated]

非常感谢!

Id  Date    Week Commencing Week Ending
1   16/07/2016  16/07/2016  22/07/2016
2   17/07/2016  16/07/2016  22/07/2016
3   18/07/2016  16/07/2016  22/07/2016
4   19/07/2016  16/07/2016  22/07/2016
5   20/07/2016  16/07/2016  22/07/2016
6   21/07/2016  16/07/2016  22/07/2016
7   22/07/2016  16/07/2016  22/07/2016
8   23/07/2016  23/07/2016  29/07/2016
9   24/07/2016  23/07/2016  29/07/2016
10  25/07/2016  23/07/2016  29/07/2016
11  26/07/2016  23/07/2016  29/07/2016
12  27/07/2016  23/07/2016  29/07/2016
13  28/07/2016  23/07/2016  29/07/2016
14  29/07/2016  23/07/2016  29/07/2016

这应该能为您提供所需的信息:

DATEADD(DAY, 6 - DATEPART(weekday,[DateCreated]), [DateCreated])

它将为您提供任何给定日期的下周五。请记住 weekday 日期部分对区域设置敏感,因此可能需要根据区域设置调整偏移量。或者您可能需要做一些更全面的事情来使其对区域设置不敏感。 SELECT @@DATEFIRST 将为您提供您所在地区一周的第一天。 7 是星期天。如有必要,您可以将其合并。

试试这个,

SET DATEFIRST 6 -- set Saturday as Week start day
SELECT DATEPART(DW,  CAST('23-jul-2016' as DATETIME))

检查这个- https://msdn.microsoft.com/en-in/library/ms181598.aspx

  • 范围开始:DATEADD(DAY, 6 - DATEPART(WEEKDAY, [DateCreated]), [DateCreated])

  • 范围结束:DATEADD(DAY, -1 * DATEPART(WEEKDAY, [DateCreated]), [DateCreated])

快乐编码