假设用户想要从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函数来解决问题,
请帮忙吗?
由于
答案 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)
期间,然后循环所有预定义的时间段,假期开始的时间是第一个,具有假期结束是最后一次,每个人都在被使用。