(Startdate BETWEEN '".$startdate2."' AND '".$enddate2."') //overlap: starts between start2/end2
OR (Startdate < '".$startdate2."'
AND (enddate = '0000-00-00' OR enddate >= '".$startdate2."')
) //overlap: starts before start2 and enddate not set 0000-00-00 (still on going) or if enddate is set but higher then startdate2
AND (
('start_date' BETWEEN STARTDATE AND ENDDATE) -- caters for inner and end date outer
OR
('end_date' BETWEEN STARTDATE AND ENDDATE) -- caters for inner and start date outer
OR
(STARTDATE BETWEEN 'start_date' AND 'end_date') -- only one needed for outer range where dates are inside.
)
20条答案
按热度按时间bwntbbo316#
本文.net的时间段库通过枚举periodrelation描述了两个时间段之间的关系:
kh212irz17#
使用momentjs的简短回答:
答案是基于上述答案,但它的缩写。
eimct9ow18#
如果您使用的日期范围尚未结束(仍在进行中),例如未设置enddate='0000-00-00',则不能使用between,因为0000-00-00不是有效日期!
我用这个方法:
如果startdate2高于enddate,则没有重叠!
brjng4g319#
这是我的java解决方案,它也适用于无限区间
q3aa052520#
这里发布的解决方案不适用于所有重叠范围。。。
我的工作方案是: