SQL计算日期

问题描述:

select emp# 
from emp 
where dateadd(YY,1,[Completed Date]) in (getdate() - 30,getdate()) 

我正在检查完成日期是否为一年,应该是下一个开始日期的30天。SQL计算日期

例如:培训22/3/2012

需要完成夺回对22/3/2013

我需要证明他是在接下来的30天内批次。

+2

'IN'不喜欢的工作。它不会产生范围。这只是一系列“或”的简写。 – 2013-03-26 00:40:49

+0

@MattBall可以请告诉如何查询 – Ram 2013-03-26 00:45:12

你不能像上面尝试的那样使用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