select emp#
from emp
where dateadd(YY,1,[Completed Date]) in (getdate() - 30,getdate())
我正在检查完成日期是否为一年,应该是下一个开始日期的 30 天。
例如:培训于 2012 年 3 月 22 日完成
需要在 22/3/2013 重考
我需要证明他在接下来的 30 天批次中。
select emp#
from emp
where dateadd(YY,1,[Completed Date]) in (getdate() - 30,getdate())
我正在检查完成日期是否为一年,应该是下一个开始日期的 30 天。
例如:培训于 2012 年 3 月 22 日完成
需要在 22/3/2013 重考
我需要证明他在接下来的 30 天批次中。
如果您想查看下一次培训(最后一次培训 + 1 年)的所有人都在接下来的 30 天内,或者 PAST DUE,试试这个:
select *, dateadd(YY, 1, [Completed Date]) nextTraining
from emp
where dateadd(YY, 1, [Completed Date]) < getdate()+30
您不能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”,但它们都可以。