好吧,假设我有一个看起来像这样的表:
ID | DATE 2 | 2010-08-12 2 | 2010-08-16 2 | 2010-08-17 2 | 2010-12-21 2 | 2010-12-22 2 | 2011-05-25
任何人都有关于如何查询它的想法,因此数据看起来像
ID | STARTDATE | ENDDATE 2 | 2010-08-12 | 2010-08-15 2 | 2010-08-16 | 2010-08-16 2 | 2010-08-17 | 2010-12-20 2 | 2010-12-21 | 2010-12-21 2 | 2010-12-22 | 2010-05-25
我不会将ID放在这里,因为我认为它与查询无关。如果您愿意,请稍后再说。这是一个MSSQL查询。
select tb1.date as startdate,dateadd(d,-1,tb2.date) as enddate from the_table tb1 join the_table tb2 on tb2.date>tb1.date left join the_table tb3 on tb1.date<tb3.date and tb3.date<tb2.date where tb3.date is null
可以很容易地将其翻译为其他数据库类型。