我想从学生表中选择一个结果 - 查询 - 如果我像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
提前致谢。
答案 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 |