我有一组类似于以下内容的MySQL数据:
| id | type | start | end |
===============================================================
| 1 | event | 2011-11-01T00:00:00 | 2012-01-02T00:00:00 |
| 2 | showing | 2012-11-04T00:00:00 | 2012-11-04T00:00:00 |
| 3 | conference | 2012-12-01T00:00:00 | 2012-12-04T00:00:00 |
| 4 | event2 | 2012-01-01T00:00:00 | 2012-01-01T00:00:00 |
我想检索特定日期范围内的事件,但我还想为每个时间跨度超过一天的行返回单个结果。实现这一目标的最佳方法是什么?
编辑:换句话说,我想从事件行返回两个结果,来自会议行的四个结果和一个结果所有其他人的结果。
非常感谢任何想法。
答案 0 :(得分:1)
试试这句话:
SELECT * FROM table
WHERE START BETWEEN '2012-01-01' AND '2012-01-03'
OR END BETWEEN '2012-01-01' AND '2012-01-03'
OR TO_DAYS(end) - TO_DAYS(start) > 1
我已创建它以便在SQL Fiddle
上进行测试