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

我正在尝试这个-

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

提前致谢。

4

2 回答 2

4

不确定我是否理解你,但这应该可以完成工作:

select *
from tblStudent s
where @year >= DATEPART(year, StartDate) and @year <= DATEPART(year, EndDate)
于 2013-05-16T07:21:12.590 回答
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

于 2013-05-16T07:33:53.070 回答