使用PHP和MySQL检查重叠日期

时间:2016-12-22 09:03:27

标签: php mysql date

我打算在以下场景中开发现金返还模块:

管理员可以为一个产品设置现金返还的测试用例,该产品的日期范围与先前在同一产品上定义的返现相冲突。

例如:

管理员为产品P1设置现金返还(可能性):

26-Dec-2016 to 29-Dec-2016 10%
25-Dec-2016 to 30-Dec-2016 10%
24-Dec-2016 to 31-Dec-2016 10%

如何处理日期范围,以使现金返还日期范围与其他日期不重叠?

如果日期范围落在特定日期范围的先前定义的现金返还中,则管理员无法设置新的现金返还。如果我们可以使用它,那么如何管理(如何检查日期范围是另一个)。

1 个答案:

答案 0 :(得分:2)

我假设,在数据库内部,您将现金返还存储为一行,CashbackStartDateCashbackEndDate为列。

在设置新的日期范围时,例如newStartDatenewEndDate,首先搜索所有返现CashbackStartDate小于newEndDate然后CashbackEndDatenewStartDate更重要。

这将抓住所有带有重叠日期的现金返还

回到你的问题,只需检查是否有任何行返回,如果是,则.....你知道该怎么做。

示例SQL代码:

... WHERE newStartDate < CashbackEndDate
      AND newEndDate   > CashbackStartDate;

这可以为您提供部分和全部重叠的所有重叠日期。