您能否让我知道重叠的SQL分割日期范围?
数据(具有日期范围和其他列的示例数据):
Col1 FromDate ToDate
1 1/1/2009 31/12/2014 输出:
Col1 From Date ToDate
问题来源于stack overflow
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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。