2013-05-16 6 views
1

학생 표의 결과를 선택하고 싶습니다. 2013과 같은 연도를 지나면 학생이 시작일과 종료일에 참여할 것을 선택하거나 현재이 기간에 에 있습니다. 학생 시작 날짜 연도가 2010이고 종료 날짜 연도가 2013 일 경우 이고 2011 년을 선택하면이 학생 기록도 표시됩니다.연도 범위에 따라 레코드를 얻으십시오

테이블 구조는

StudentID Age startDate EndDate 

1   14 5/05/2013 7/05/2013 
4   17 4/04/2012 8/10/2012 

을 - 이것도 내가 미리 this-

select * from tblstudent 
Where DATEPART(year, StartDate) BETWEEN @year-1 AND @year 

감사를 시도하고있다.

+0

질문이 이해가 가지 않습니다. 당신의 질문을 더 분명히 말하십시오. – swissben

답변

4
내가 당신을 이해하면

확실하지,하지만이 작업을 수행해야합니다

select * 
from tblStudent s 
where @year >= DATEPART(year, StartDate) and @year <= DATEPART(year, EndDate) 
1

사실, 당신 거의 다.

당신은 StartDateEndDate@year에 더 큰거나 같은 당신의 당신의 @year년 부분보다 작거나 같다 당신의 연도 부분을 비교해야합니다.

시도해보십시오.

select * 
from tblStudent 
where DATEPART(year, startDate) <= @year and DATEPART(year, EndDate) >= @year 

@year = 2013의 경우 출력은 다음과 같습니다.

| STUDENTID | AGE |     STARTDATE |      ENDDATE | 
------------------------------------------------------------------------------ 
|   1 | 14 | May, 05 2013 03:00:00+0000 | July, 05 2013 03:00:00+0000 | 

여기 SQL Fiddle Demo.

관련 문제