2012-11-21 3 views
3

지난 3 개월 동안 월요일에 삽입 된 테이블의 모든 행을 수집해야합니다. 그 결과를 얻으려면 어떻게 WHERE 절을 작성해야합니까?지난 X 개월 동안 X 요일에 삽입 된 결과를 선택하는 방법은 무엇입니까?

WHERE Date = (wk, DATEDIFF(wk,0,GETDATE()), 0) 
현재 주 월요일부터 모든 것을 선택합니다

하지만 석 달 돌아가는 월요일의 범위를 선택하는 것입니다에 문제가있는 무슨.

감사합니다.

그래서 이것은 우리가 내가이 추가 월요일에 시작 요일을 입력 할 경우

where Datestamp > dateadd(month, -3, getdate()) 
AND datepart(weekday, Datestamp) = datepart(weekday, DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0)) 

가 나는 부분 만 변경 .... 내가 그와 함께 결국 WHERE 절 나를 위해 잘 작동입니다 ...

DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0) 

답변

4
WHERE Date > dateadd(month, -3, getdate()) 
AND datepart(weekday, Date) = 1 

이러한 두 개의 조건은 다음과 같다; 하나에 압축 할 필요가 없습니다.

참고 :datepart(weekday, @AMondayDate)에 대한 값을 확인하려면 컴퓨터에서 테스트를 실행하십시오. 일부 시스템에서는 월요일이 1이고, 나머지는 2입니다. 그것은 DATEFIRST configuration에 달려 있습니다.

업데이트 : 평일 번호 문제를 극복 영리한 트릭에 대한 ErikE-

가 감사 :

WHERE Date > dateadd(month, -3, getdate()) 
AND datepart(weekday, Date) = datepart(weekday, '2012-11-25') 
+0

그냥'DATEPART (평일, DateColumn을) 할 = DATEPART (평일, 'KnownMondayDate') ' – ErikE

+0

@ErikE은 매우 효과적인 트릭입니다. 감사! 업데이트 됨. – GolfWolf

+0

정말 대단한 감사합니다! 그것은 정말로 잘 돌아갔다. –

관련 문제