开发者社区> 问答> 正文

SQL日期范围分割

您能否让我知道重叠的SQL分割日期范围?

数据(具有日期范围和其他列的示例数据):

Col1 FromDate ToDate
  1. 1 1/1/2008 31/12/2010
  2. 1 1/1/2009 31/12/2012
  3. 1 1/1/2009 31/12/2014 输出:

    Col1 From Date ToDate

  4. 1 1/1/2008 31/12/2008 (from row 1 above)
  5. 1 1/1/2009 31/12/2010 (from rows 1,2 and 3 above)
  6. 1 1/1/2011 31/12/2012 (from rows 2 and 3 above)
  7. 1 1/1/2013 31/12/2014 (from row 3 above)

问题来源于stack overflow

展开
收起
保持可爱mmm 2019-11-18 16:43:58 403 0
1 条回答
写回答
取消 提交回答
  • 6

    这应该可以解决问题(MySQL方言,但易于适应)

    最初设定

    SQL query: SELECT * FROM test LIMIT 0, 30 ; Rows: 3 start end 2008-01-01 2010-12-31 2009-01-01 2012-12-31 2009-01-01 2014-12-31 询问

    SELECT start , min( end ) FROM ( SELECT t1.start, t2.end FROM test t1, test t2 WHERE t1.start < t2.end UNION SELECT t1.end + INTERVAL 1 DAY , t2.end FROM test t1, test t2 WHERE t1.end + INTERVAL 1 DAY < t2.end UNION SELECT t1.start, t2.start - INTERVAL 1 DAY FROM test t1, test t2 WHERE t1.start < t2.start - INTERVAL 1 DAY ) allRanges GROUP BY start 结果

    start min( end ) 2008-01-01 2008-12-31 2009-01-01 2010-12-31 2011-01-01 2012-12-31 2013-01-01 2014-12-31

    2019-11-18 16:44:07
    赞同 展开评论 打赏
问答分类:
SQL
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载