将两个日期分为几个时期

时间:2010-11-13 11:48:16

标签: php sql mysql

假设用户想要从2010年10月17日到2010年11月15日休假。

在某个设置页面上,我声明了每个月的开始日期和结束日期,如下所示:

m1 :from 1-10-2010 to 20-10-2010
m2: from 21-10-2010 to 10-11-2010
m3: from 11-11-2010 tom 30-11-2010

正如我们所看到的,假期与许多时期(m1,m2,m3)有关,而不仅仅是一个时期,所以我需要将假期分为几个时期,而时期数组应如下所示:

from 17-10-2010 to 20-10-2010  
from 21-10-2010 to 10-11-2010  
from 11-11-2010 to 15-11-2010  

我认为仅使用PHP解决问题会很复杂,所以我想用PHP和MySQL函数来解决问题,

请帮忙吗?

由于

2 个答案:

答案 0 :(得分:0)

SELECT  GREATEST(period_start, @vacation_start),
        LEAST(period_end, @vacation_end)
FROM    mytable
WHERE   period_start <= @vacation_end
        AND period_end >= @vacation_start

答案 1 :(得分:0)

我会说,首先你需要看看第一个日期在哪个时期。对于这个案例,假期从第一个时期开始(17-10-2010 >= 1-10-2010 && 17-10-2010 <= 20-10-2010),那么你需要弄清楚结束的时间段日期适合。(15-11-2010 >= 11-11-2010 && 15-11-2010 <= 30-11-2010)所有期间都由假期覆盖。 为了解决这个问题,我要做的是创建一个函数来决定日期是否在(receiving $start, $end)期间,然后循环所有预定义的时间段,假期开始的时间是第一个,具有假期结束是最后一次,每个人都在被使用。

相关问题