繁体   English   中英

获取日期序列中所有缺少的日期

[英]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. 创建一个新表并插入编号为1-365的365行(或者使用已经有365行以上的表,并使用rownum或类似的结构来获取唯一的整数)

  2. 将您的日期转换为整数(在Oracle中使用TO_CHAR( mydate, 'ddd' )

  3. 将这两个列表一起添加到您的查询中以找到适当的集合(重叠,丢失等)

  4. 转换回日期

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM