我试图找出Timeperiod是否在一个时间段内。我有我的参考时间段和比较时间段。 让我举个例子:
=>这完全可以。
=>不行,因为D在C中。
我希望你得到我想要的东西。我试图制作serval< =>如果行动,但这开始变得巨大而缓慢。也许有更快的方法可以做到这一点。
此外,MySQL是否能够做到这一点?
答案 0 :(得分:0)
你可以这样做:
检查Reference_start >= comparative_start && Reference_end < comparative_end
,如果此条件成立,则您的时间将重叠。
答案 1 :(得分:0)
如果您有reference
期(包含startDate
和endDate
)并且您有comparative
个句点,那么您可以在此where
条款中使用MySQL的:
where ((reference.startDate > comparative.endDate) or reference.endDate < comparative.startDate)
如果两个时期没有交集,那将是真的。
答案 2 :(得分:0)
您可以使用php timestamp
$reference_start_date = "1.1.2014";
$reference_end_date = "1.2.2014";
$comparative_start_date = "1.4.2014";
$comparative_end_date = "1.5.2014 ";
$reference_start_time = strtotime(str_replace(".", "-", $reference_start_date);
$reference_end_time = strtotime(str_replace(".", "-", $reference_end_date);
$comparative_start_time = strtotime(str_replace(".", "-", $comparative_start_date);
$comparative_end_time = strtotime(str_replace(".", "-", $comparative_end_date);
if($comparative_start_time>$reference_start_time && $comparative_start_time<$reference_end_time)
{
echo "Not OK";
}
else if($comparative_end_time>$reference_start_time && $comparative_end_time<$reference_end_time)
{
echo "Not OK";
}
else if($comparative_start_time<$reference_start_time && $comparative_end_time>$reference_end_time)
{
echo "Not OK";
}
else
{
echo "OK";
}
答案 3 :(得分:0)
假设您以UTC格式提供日期,则比较两个日期范围非常简单。有5个具体案例可能发生:
11111......
......22222
..11111.....
.....22222..
...11111....
...22222....
.....11111..
..22222.....
......11111
22222......
只有第一个和最后一个是您正在寻找的。构建if查询并否定它很容易:
if (!($dateRange1End <= $dateRangeStart2 && $dateRange2End <= $dateRange1Start))
// NOT OKAY
else
// OKAY