使用PHP和MySQL检查重叠日期

使用PHP和MySQL检查重叠日期,php,mysql,date,Php,Mysql,Date,我计划在以下场景中开发现金返还模块: 将有一些测试案例,管理员可以为一个日期范围与以前定义的同一产品的现金返还冲突的产品设置现金返还 例如: 管理员将产品P1的现金返还设置为(可能): 如何处理日期范围,使回现日期范围不与其他日期重叠 或者,如果某个日期范围落在以前为特定日期范围定义的现金返还中,则管理员无法设置新的现金返还。如果我们可以这样做,那么如何管理(如何检查日期范围属于另一个范围)。我假设,在数据库中,您将现金返还存储为一行,而现金返还日期和现金返还日期作为列 当设置新的日期范围时,比

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

将有一些测试案例,管理员可以为一个日期范围与以前定义的同一产品的现金返还冲突的产品设置现金返还

例如:

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

如何处理日期范围,使回现日期范围不与其他日期重叠


或者,如果某个日期范围落在以前为特定日期范围定义的现金返还中,则管理员无法设置新的现金返还。如果我们可以这样做,那么如何管理(如何检查日期范围属于另一个范围)。

我假设,在数据库中,您将现金返还存储为一行,而
现金返还日期和
现金返还日期作为列

当设置新的日期范围时,比如说
newStartDate
newEndDate
,首先用
CashbackStartDate
搜索所有现金返还小于
newEndDate
,然后
CashbackEndDate
大于
newStartDate

这将为您获取所有日期重叠的现金返还

回到您的问题,只需检查是否返回了任何行,如果是,那么……您知道该怎么做

示例SQL代码:

... WHERE newStartDate < CashbackEndDate
      AND newEndDate   > CashbackStartDate;
。。。其中newStartDateCashbackStartDate;

这将使您获得所有部分和全部重叠的重叠日期

感谢您的快速回复Mohd Abdul Mujid,感谢您的快速回复@Mohd Abdul Mujid,此外,是的,我将在DB中存储开始和结束日期以进行现金返还。此外,您建议的解决方案是否涵盖以下场景:如果newStartDate小于savedStartDate且newEndDate大于savedStartDate示例:保存的开始和结束日期[2016年12月25日至2016年12月30日]新的开始和结束日期[2016年12月24日至2016年12月31日]如果我在某个地方出错,请更新我。@AtulSharma是的,上述代码将有效,因为ns(新开始)24是
ee 30。伊奎姆
... WHERE newStartDate < CashbackEndDate
      AND newEndDate   > CashbackStartDate;