Hive日期比较

时间:2017-07-26 18:26:30

标签: hive

我在Hive表中有以下列。所有列都是数据类型string。每行是不同的,因为另一列(7或8个列)值中至少有一个唯一值。我想写一个Hive查询来选择datetime >= 2017-05的记录并删除datetime < 2017-05所在的记录。此处的输出应为orderid - 101, 102, 103的行。应删除orderid 100的所有记录。注意:Orderid 100有1条记录,日期时间&gt; 2017-05。仍然应该删除,因为它至少有1个记录,日期时间&lt; 2017-05。 Orderid可以是任何12-16位数字。该表有数十亿条记录。

有人可以帮忙为此编写一个配置单元查询吗?提前谢谢。

datetime            orderid     other columns
2017-04-30 17:10:05 100 
2017-03-05 12:25:30 100 
2017-05-09 08:18:44 100 
2017-05-15 04:21:43 101 
2017-06-20 11:20:10 101 
2017-05-22 05:09:35 102 
2017-07-01 06:25:30 102 
2017-06-25 08:24:40 103 
2017-05-11 11:50:49 103 

输出结果:

datetime            orderid     other columns

2017-05-15 04:21:43    101 
2017-06-20 11:20:10    101 
2017-05-22 05:09:35    102 
2017-07-01 06:25:30    102 
2017-06-25 08:24:40    103 
2017-05-11 11:50:49    103

2 个答案:

答案 0 :(得分:0)

select  *

from   (select  *
               ,min(datetime) over (partition by  orderid) as min_datetime  

        from    mytable
        ) t

where   min_datetime >= '2017-05'
;

答案 1 :(得分:0)

选择* from(select min(datetime)as date_time,orderid from mytable group by orderid)t 其中date_time&gt; =&#39; 2017-05%&#39;;