php mysql双日期范围

Pur*_*h32 0 php mysql date range

我正在研究一个事件callendar,我很难找到一个mysql查询,在一个给定的范围内选择我的事件.我的活动有开始/结束日期,我的范围也是如此(月份).

我尽力描绘我想要的东西:(我想选择事件1,2,3,4而不是5或6)

         |========= April ===========|            => Range
     +--(1)--+                   +--(2)--+        => Partialy Overlapping Events
                   +--(3)--+                      => Events included in range
     +----------------(4)----------------+        => Ovelapping events
+-(5)-+                                 +-(6)-+   => Events outside of range
Run Code Online (Sandbox Code Playgroud)

我发现了这个类似的问题:2列Mysql日期范围在PHP中搜索,但我不认为这是重复的,好像我在我的问题中正确理解范围有开始和结束日期,而在另一个问题中范围是单个日期.

cod*_*ing 5

解决方案仍然与您要链接的问题非常相似; 试试这个查询:

SELECT * FROM events e
    WHERE `start` <= [RANGE.end]
    AND `end`  >= [RANGE.start]
Run Code Online (Sandbox Code Playgroud)

你当然必须用你的范围的第一个和最后一个日期替换[RANGE.start]和[RANGE.end].如果例如RANGE.start ='2011-04-01'和RANGE.end ='2011-04-30',则上述查询将给出11月4日发生的所有结果.

根据您是否要选择仅"触摸"范围的事件(意味着它们具有共同的边界日期,但实际上不重叠),您可以替换<=/ >=by </ >.