我打算在以下场景中开发现金返还模块:
管理员可以为一个产品设置现金返还的测试用例,该产品的日期范围与先前在同一产品上定义的返现相冲突。
例如:
管理员为产品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%
如何处理日期范围,以使现金返还日期范围与其他日期不重叠?
如果日期范围落在特定日期范围的先前定义的现金返还中,则管理员无法设置新的现金返还。如果我们可以使用它,那么如何管理(如何检查日期范围是另一个)。
答案 0 :(得分:2)
我假设,在数据库内部,您将现金返还存储为一行,CashbackStartDate
和CashbackEndDate
为列。
在设置新的日期范围时,例如newStartDate
和newEndDate
,首先搜索所有返现,CashbackStartDate
小于newEndDate
然后CashbackEndDate
比newStartDate
更重要。
这将抓住所有带有重叠日期的现金返还。
回到你的问题,只需检查是否有任何行返回,如果是,则.....你知道该怎么做。
示例SQL代码:
... WHERE newStartDate < CashbackEndDate
AND newEndDate > CashbackStartDate;
这可以为您提供部分和全部重叠的所有重叠日期。