我觉得我真的很接近这个,但我还是不合时宜!
我试图创建一个日期(报告),这样我就可以在周六到周五每周选择一个。 以上周为例,下面的代码为我提供了2016年7月24日至2016年7月24日的日期范围,但是我希望日期范围为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
答案 0 :(得分:0)
这应该可以满足您的需求:
DATEADD(DAY, 6 - DATEPART(weekday,[DateCreated]), [DateCreated])
在任何指定日期,它将为您提供以下星期五。请记住,weekday
datepart是区域设置敏感的,因此可能需要根据区域设置调整偏移量。或者您可能需要做一些更全面的操作,以使其对区域设置不敏感。 SELECT @@DATEFIRST
会在您的语言环境中为您提供一周中的第一天。 7是星期天。如有必要,您可以将其合并。
答案 1 :(得分:0)
试试这个,
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
答案 2 :(得分:0)
开始范围:DATEADD(DAY, 6 - DATEPART(WEEKDAY, [DateCreated]),
[DateCreated])
范围结束:DATEADD(DAY, -1 * DATEPART(WEEKDAY, [DateCreated]),
[DateCreated])
快乐编码