2016-08-03 9 views
0

나는이 문제를 해결하는 데 정말로 가깝다고 생각하지만 나는 막 벗어났다.SQL Server 2012 - Week 날짜 토요일 금요일까지

매주 토요일과 금요일을 선택할 수있는 날짜를 작성하려고합니다. 지난 주 예를 들어 다음 코드를 사용하면 2016 년 7 월 24 일부터 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 
+0

['SET DATEFIRST'] (https://msdn.microsoft.com/en-in/library/ms181598.aspx)를 찾으십니까? – Arulkumar

답변

0

이 당신을 위해 무엇을 찾고있는 당신을 주어야한다 :

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

그것은 주어진 날짜 당신에게 다음과 같은 금요일을 줄 것이다. weekday datepart는 로캘에 따라 달라 지므로 오프셋은 로캘에 따라 조정해야 할 수도 있습니다. 또는 로케일을 구분하지 않도록보다 포괄적 인 작업을 수행해야 할 수도 있습니다. SELECT @@DATEFIRST은 로케일의 첫 번째 요일을 알려줍니다. 7 일요일입니다. 필요한 경우이를 통합 할 수 있습니다.

+0

안녕하십니까 - 신속한 답장을 보내 주셔서 감사합니다. 저는 이러한 솔루션을 사용하여 만든 것을 다시 만들 수 없습니다. (예 : 주간 날짜 범위가 예 : 25 일 31 일) 위와 같이 설명하기 위해 미니 데이터 세트를 만들었습니다. 나는 주 시작과 주 결말을 모두 보여 주었지만 어떤 것이 만들어 졌는지는 중요하지 않습니다. (이것이 다른 것보다 쉽다면) - 이것이 도움이되기를 바랍니다 :) – Baseline9

+0

Ahhh 제가 해결했습니다! 네가 말하기로는 금요일이 일주일의 첫날이었고 7 시까 지 오프셋되어서 일주일에 끝난다. (매주 금요일) - 너의 모든 도움에 감사한다. 코드의 복잡한 비트 중에서 내가 극복해야 할 마지막 장애물이었습니다! – Baseline9

0
  • 시작 : 범위의 DATEADD(DAY, 6 - DATEPART(WEEKDAY, [DateCreated]), [DateCreated])

  • 종료 : DATEADD(DAY, -1 * DATEPART(WEEKDAY, [DateCreated]), [DateCreated])

해피 코딩