Mysql选择与预定日期范围不相交的日期

Mysql选择与预定日期范围不相交的日期,mysql,select,date-range,Mysql,Select,Date Range,我有一个日期表,每个日期代表一项任务,任务需要三天才能完成。 我想选择与另一个预定任务不相交的所有未预定日期。 我已经用谷歌搜索了三天了,我想是时候寻求帮助了 date booked =========== ======= 2014-09-01 0 2014-09-02 1 2014-09-05 0 2014-09-10 1 2014-09-15 0 2014-09-16 0 2014-09-20 1 2014-09-25 0 预

我有一个日期表,每个日期代表一项任务,任务需要三天才能完成。 我想选择与另一个预定任务不相交的所有未预定日期。 我已经用谷歌搜索了三天了,我想是时候寻求帮助了

date         booked
=========== =======
2014-09-01    0
2014-09-02    1
2014-09-05    0
2014-09-10    1
2014-09-15    0
2014-09-16    0
2014-09-20    1
2014-09-25    0
预期结果:

date         booked
=========== =======
2014-09-01    0
2014-09-15    0
2014-09-16    0
2014-09-25    0

请参考以下答案

如果您可以将日期更改为开始日期,并添加列End_date Start_date+3,则在引用的答案中添加NOT将导致您的答案没有重叠的日期范围

select dr1.* from date_ranges dr1
inner join date_ranges dr2
where NOT (dr2.start > dr1.start -- start after dr1 is started
  and dr2.start < dr1.end) -- start before dr1 is finished 

从上述查询的结果中,您可以选择“预订”列为0的行。

您可以使用左联接,在同一表的“日期”列中添加3天的“为空”,以获取未预订的日期,并且不与其他任务的预订日期相交

select t.*,
t1.date date1
from t
left join t t1 on(t.date = t1.date + interval 3 day)
where t.booked = 0 and t1.date is null

您能否详细说明预期结果集背后的逻辑?预定日期是客户预定任务的日期。未预订的日期为要求的任命日期。我只想显示未预订的日期,并且不会恰好在预订的约会期间,因为每个约会需要三天才能完成。谢谢,在对您的小提琴做了一些更改后,这一个解决了它,包括不与前后变量相交:[fiddle Demo][1]-[1]:非常感谢您的想法!