我有两套日期。我需要检查SQL Server
中Set B日期的集合A日期是否重叠最好的方法是什么?
设置A:(MM / DD / YYYY)
Date from: 1/1/2013
Date To: 2/15/2013
设置B(MM / DD / YYYY)
Date From : 2/10/2013
Date To : 2/20/2013
更新
这是一个休假申请,如果雇员申请休假,我需要检查同一雇员的任何其他待审/批准的休息时间是否过了。在让员工休假之前。
答案 0 :(得分:2)
鉴于两个日期范围(A
和B
),您可以通过检查A
在B
完成之前是否开始以及A
完成后来测试它们是否重叠B
开始。根据您的数据,在SQL中执行此操作应该相当简单:
If Exists
(
SELECT 1
FROM LeaveTable
WHERE State In ('Pending', 'Approved')
And @ProposedStart < EndDate
And @ProposedEnd > StartDate
)
BEGIN
RAISERROR('The proposed leave overlaps.', 16, 1);
Return;
END;