SQL Server 2012-星期日期星期六到星期五
问题描述:
我觉得我真的很接近这个,但我只是脱颖而出!SQL Server 2012-星期日期星期六到星期五
我想创建一个日期(通过报告),这将允许我选择每周星期六到星期五。 以上周为例,下面的代码给我2016年7月29日的日期范围为2016年7月24日至2016年7月30日,但我希望日期范围为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
datepart是区域设置敏感的,所以偏移量可能需要根据区域设置进行调整。或者您可能需要做更全面的事情,以使其对地区不敏感。 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])
快乐编码
您是否在寻找['SET DATEFIRST'](https://msdn.microsoft.com/en-in/library/ms181598.aspx)? – Arulkumar