如何将1组日期与SQL Server中的另一组日期进行比较,以确定重叠时间

时间:2013-07-12 15:31:18

标签: sql-server-2008 datetime

我有两套日期。我需要检查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 

更新
这是一个休假申请,如果雇员申请休假,我需要检查同一雇员的任何其他待审/批准的休息时间是否过了。在让员工休假之前。

1 个答案:

答案 0 :(得分:2)

鉴于两个日期范围(AB),您可以通过检查AB完成之前是否开始以及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;