我一直在解决一些事情。我如何检查时间范围是否在另一个时间范围之间?检查时间范围是否在另一个时间范围
例如,我如何检查11:00 AM - 12:00 PM是在9:30 AM - 2PM之间? 我需要这个开发计时系统来检查员工的病假是否涵盖他的计划休息时间。使用SQL Server 2008
declare @timefrom datetime
declare @timeto datetime
declare @timefromBreak datetime
declare @timetoBreak datetime
set @timefrom = cast('01/21/2015 11:30:00' as datetime)
set @timeto = cast('01/21/2015 14:00:00' as datetime)
set @timefromBreak = cast('01/21/2015 11:00:00' as datetime)
set @timetoBreak = cast('01/21/2015 12:00:00' as datetime)
select
case when ((@timefromBreak between @timefrom and @timeto) AND (@timetoBreak between @timefrom and @timeto)) then
(datediff(hour, @timefrom,@timeto) - datediff(hour,@timefromBreak,@timetoBreak))
else datediff(hour, @timefrom,@timeto)
end as TotalLeaveHours
我在这里是我的例子..我尝试获得总休假小时的员工申请休假了。
的逻辑是,我将获得的总休假时间不包括休息时间(当且仅当休假时间范围涵盖了休息时间。)
因此,如果雇员提出了请假11:30 PM到下午2点,他的预定休息时间是从11:00到12:00。总休假时间应该只有2个小时。
上午11:30至下午12:00不应该算对,因为他的计划的总时间休假时间为上午11:00至下午12:00 ..
您的表格是什么样的?什么是数据和你期望的输出?最重要的是你尝试过什么? – 2015-01-21 07:17:06
确定重叠有一个非常简单的规则 - 两个时间段重叠,如果第一个在第二个结束之前开始*和*第二个在第一个结束之前开始 - 但是,根据您发布的答案,实际上是试图围绕重叠进行一些计算 - 所以你可以编辑你的问题并添加一些示例数据和预期结果 - 我们不需要很多,但是多于一个*单个的例子可能是有益的。 – 2015-01-21 07:51:30
谢谢,我会.. – 2015-01-21 08:03:14