我一直在解決一些事情。我如何檢查時間範圍是否在另一個時間範圍之間?檢查時間範圍是否在另一個時間範圍
例如,我如何檢查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