我想要一个动态查询,它将获取已成功完成6 个月并准备好确认的员工姓名。
我写了一个硬编码查询来做到这一点。这是查询
SELECT [emp_name] FROM [emp_mst]
WHERE Dt_Of_Join >= dateadd(m, -7, datediff(d, 8, getdate()))
and Dt_Of_Join < dateadd(m, -6, datediff(d, 9, getdate()))
例如:如果员工于 加入1st dec,2014
,他将在 完成 6 个月31st May 2015
。
所以在六月,他可以在任何日期被暗示。上面的查询根据今天的日期为我提供了Nov16 2014
to的结果。Dec 15 2014
我希望它被动态处理
请建议。
我正在使用sql server 2005。
今天,没有时间,是:
然后转到本月的第一天:
现在要获得所有在 6 个月前的一个月内入职的员工,您可以说:
执行此操作的明智方法是通过一个参数,如果没有提供日期,该参数将返回到今天。
(现在也很容易测试它是否适用于任何日期,包括闰年的 2 月 29 日......)
这是在一行中执行此操作的不合逻辑的方法(我完全不知道为什么您认为这是有效或重要的要求):
哦,是的,这更容易阅读和排除故障。而且,它并没有为你保存任何角色,它实际上更...
</facepalm>