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

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

例如:培训于 2012 年 3 月 22 日完成

需要在 22/3/2013 重考

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

4

2 回答 2

1

如果您想查看下一次培训(最后一次培训 + 1 年)的所有人都在接下来的 30 天内,或者 PAST DUE,试试这个:

select *, dateadd(YY, 1, [Completed Date]) nextTraining
from emp
where dateadd(YY, 1, [Completed Date]) < getdate()+30
于 2013-03-26T00:53:01.497 回答
0

您不能IN像上面尝试的那样使用。相反,您可以使用BETWEEN或我的首选,大于和小于:

select emp# 
from emp 
where dateadd(YY,1,[Completed Date]) >= getdate()-30
   and dateadd(YY,1,[Completed Date]) <= getdate()

不确定您是否需要该子句AND中的标准WHERE,但如果您这样做,它就在那里。我还建议使用“year”而不是“YY”,但它们都可以。

于 2013-03-26T00:45:25.347 回答