0

我有两组日期。我需要检查设置 A 日期是否与 SQL Server 中的设置 B 日期重叠

最好的方法是什么?

A组:(MM/DD/YYYY)

Date from: 1/1/2013  
Date To:   2/15/2013

B组(月/日/年)

Date From : 2/10/2013
Date To : 2/20/2013 

更新
这是一个请假申请,如果员工申请请假,我需要检查从和到日期是否超过同一员工的任何其他未决/已批准的假期。在让员工申请休假之前。

4

1 回答 1

2

给定两个日期范围(AB),您可以通过检查是否在结束之前开始和在开始之后结束来测试它们A是否B重叠。根据您的数据,在 SQL 中执行此操作应该相当简单:AB

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;
于 2013-07-12T17:44:06.787 回答