Sql 如何选择数据为空的时间段?

Sql 如何选择数据为空的时间段?,sql,hive,hiveql,Sql,Hive,Hiveql,我想找出所有数据为空的时段,如下表所示: 答案是: Empty_start Empty_end 2017-06-07 2017-06-30 2017-07-02 2017-07-19 考虑月数是很重要的。例如,在第一行中,答案2017-06-31是不正确的 如何在配置单元中编写此查询?您可以使用滞后或超前: 第二阶段不应该在2017-07-19结束吗?@DuduMarkovitz:是的,更新了。谢谢。我得到了错误:-bash:在运行此查询时出现“意外标记附近的语法错误”:

我想找出所有数据为空的时段,如下表所示:

答案是:

Empty_start    Empty_end
2017-06-07     2017-06-30
2017-07-02     2017-07-19
考虑月数是很重要的。例如,在第一行中,答案2017-06-31是不正确的

如何在配置单元中编写此查询?

您可以使用滞后或超前:


第二阶段不应该在2017-07-19结束吗?@DuduMarkovitz:是的,更新了。谢谢。我得到了错误:-bash:在运行此查询时出现“意外标记附近的语法错误”:选择date\u addto\u dateday,1为空\u start,date\u addnext\u day,-1为空\u end from select to\u dateday,导致从my\u表组中的order by to\u DateDateDay作为下一天到\u DateDate my\u表,其中next\u date\u addto\u DateDate,1@Digoraius-查询正常。@DuduMarkovitz我收到以下错误:SemanticException[错误10004]:第1行:269无效的表别名或列引用“day”:可能的列名为:\ c0,next\u day。只是为了注意到这一天是美好的。我再次检查my_表中是否有列day。因此,我有点困惑,不理解错误。
Empty_start    Empty_end
2017-06-07     2017-06-30
2017-07-02     2017-07-19
select date_add(day, 1) as empty_start, date_add(next_day, -1) as empty_end
from (select day,
             lead(day) over (order by day) as next_day
      from t
      group by day
     ) t
where next_day <> date_add(day, 1);