mySQL查找连续日期

mySQL查找连续日期,sql,mysql-workbench,Sql,Mysql Workbench,给定具有以下列(int)id、(DATE)beginDay、(DATE)endDay的数据库 查找相隔1天的连续日期,并输出开始日期和结束日期 i、 e 印刷品 这是一种缺口和孤岛问题。可以通过从日期中减去一系列值来解决这个问题——当日期连续时,差值是恒定的 如果您查看的是beginday,您可以使用: select min(beginday), max(beginday) from (select t.*, row_number() over (order by be

给定具有以下列(int)id、(DATE)beginDay、(DATE)endDay的数据库

查找相隔1天的连续日期,并输出开始日期和结束日期

i、 e

印刷品


这是一种缺口和孤岛问题。可以通过从日期中减去一系列值来解决这个问题——当日期连续时,差值是恒定的

如果您查看的是
beginday
,您可以使用:

select min(beginday), max(beginday)
from (select t.*,
             row_number() over (order by beginday) as seqnum
      from t
     ) t
group by beginday - interval seqnum day;
如果您关心
endday
,您可以使用:

select t.*
from t
where endday = begindate + interval 1 day;

我很困惑。2011-01-07发生了什么?第二行的逻辑是什么?左边的整数是id列,只是为了更好地练习,它有些无用。第二行是结束日,因此类似于时间表中的时钟。2011-01-07将意味着在该日期打卡。我只寻找连续日期的序列,然后返回序列的第一天和最后一天。
select min(beginday), max(beginday)
from (select t.*,
             row_number() over (order by beginday) as seqnum
      from t
     ) t
group by beginday - interval seqnum day;
select t.*
from t
where endday = begindate + interval 1 day;