select emp#
from emp
where dateadd(YY,1,[Completed Date]) in (getdate() - 30,getdate())
我正在检查完成日期是否为一年,应该是下一个开始日期的30天。SQL计算日期
例如:培训22/3/2012
需要完成夺回对22/3/2013
我需要证明他是在接下来的30天内批次。
select emp#
from emp
where dateadd(YY,1,[Completed Date]) in (getdate() - 30,getdate())
我正在检查完成日期是否为一年,应该是下一个开始日期的30天。SQL计算日期
例如:培训22/3/2012
需要完成夺回对22/3/2013
我需要证明他是在接下来的30天内批次。
你不能像上面尝试的那样使用IN
。相反,你可以使用BETWEEN
或我的理想,比大于和小于:
select emp#
from emp
where dateadd(YY,1,[Completed Date]) >= getdate()-30
and dateadd(YY,1,[Completed Date]) <= getdate()
不能确定你所需要的WHERE
子句中的AND
标准,但如果这样做,它的存在。我还建议使用“年”而不是“YY”,但他们都会工作。
如果你想看到大家的是,接下来的训练(最后一次训练+ 1年)是在接下来的30天,或过期,试试这个:
select *, dateadd(YY, 1, [Completed Date]) nextTraining
from emp
where dateadd(YY, 1, [Completed Date]) < getdate()+30
'IN'不喜欢的工作。它不会产生范围。这只是一系列“或”的简写。 – 2013-03-26 00:40:49
@MattBall可以请告诉如何查询 – Ram 2013-03-26 00:45:12