选择两个日期之间的数据

时间:2015-10-01 12:53:20

标签: hadoop hive

我在Hive上使用下面的数据集

+++++++++++++++++++++++++++++++++++++++++++
code             dateJ                 capa
+++++++++++++++++++++++++++++++++++++++++++
1988           2015-08-22               23
0470           2015-07-26               455
...             .....                   ...
5884           2015-08-01               54
4587           2015-06-05              100

我想选择"代码"从两个日期之间的表。以下查询有效:

SELECT code FROM tabl WHERE dateJ BETWEEN '2015-06-05' AND '2015-08-22'

但是当我使用嵌套/子查询时,我没有工作:

SELECT code FROM tabl WHERE dateJ BETWEEN (SELECT MIN(dateJ) FROM tabl) and (SELECT MAX(dateJ) FROM tabl)

是否有任何机构可以帮助解决问题(使用第二个查询)。 hive不支持子查询。

THX

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。这是:

select code from tabl, 
(select min(dateJ) mindate, max(dateJ) maxdate from tabl) tmp 
where dateJ between tmp.mindate and tmp.maxdate

答案 1 :(得分:0)

遗憾的是,此功能为not supported in Hive。您只能将where子句中的select语句与INNOT INEXISTSNOT EXISTS结合使用。如果你能找到一种方法来构建使用这些和连接所需的功能,那么这就是你要走的路。