[英]Get all the missing dates in a sequence of dates
我正在尝试按升序排列的日期序列中获取所有缺少的日期。 如何在不使用任何函数或udfs的情况下使用简单的sql做到这一点。
Input :-
2016-09-01
2016-09-02
2016-09-05
2016-09-10
输出:-
2016-09-03
2016-09-04
2016-09-06
2016-09-07
2016-09-08
2016-09-09
我尝试了什么?
select start, stop
from
(
select m.x + 1 as start,
(select min(x) - 1 from X as x where x.x > m.x) as stop
from X as m
left outer join X as r
on m.x = r.x - 1
where r.x is null
) as x
where stop is not null;
创建一个新表并插入编号为1-365的365行(或者使用已经有365行以上的表,并使用rownum或类似的结构来获取唯一的整数)
将您的日期转换为整数(在Oracle中使用TO_CHAR( mydate, 'ddd' )
)
将这两个列表一起添加到您的查询中以找到适当的集合(重叠,丢失等)
转换回日期
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.