根据年份范围获取记录

时间:2013-05-16 07:16:01

标签: c# asp.net sql sql-server-2008-r2

我想从学生表中选择一个结果 - 查询 - 如果我像2013年一样通过任何一年,那么选择学生加入开始日期和结束日期,或者他现在在那里 在这一年之间 比如,如果任何学生开始日期是2010年,结束日期年份是2013年 然后我选择2011年,然后显示这个学生记录。

表结构是 -

StudentID   Age startDate   EndDate

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

我正在尝试这个 -

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

提前致谢。

2 个答案:

答案 0 :(得分:4)

不确定我是否理解你,但这应该可以胜任:

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

答案 1 :(得分:1)

实际上,你几乎就在那里。

您只需比较StartDate的年份部分小于或等于您的@year 年份EndDate的年份大于或等于你的@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