Hive - 如何从Hive获取最近几个月的数据?

时间:2015-06-03 13:07:15

标签: sql hive hiveql

如何从Hive获取最近2个月的数据?

这是我的尝试:

select (date_add(FROM_UNIXTIME(UNIX_TIMESTAMP(), 'yyyy-MM-dd'),
     2 - month(FROM_UNIXTIME(UNIX_TIMESTAMP(), 'yyyy-MM-dd')) 
    ));

结果于2015-05-30。结果应如下:如果今天是'2015-06-03',那么过去两个月的结果应该是:'2015-04-01'。请注意,我将结果的第一天放在第一天。我在这做错了什么?谢谢!

额外说明:

在SQL中很容易获得:

 select * from date_field >= DATEADD(MONTH, -2, GETDATE());

1 个答案:

答案 0 :(得分:0)

date_add增加天数,而不是月数。以下行评估为-4

2 - month(FROM_UNIXTIME(UNIX_TIMESTAMP(), 'yyyy-MM-dd'))

所以你基本上从2015-06-03'中减去了4天,这就是你得到结果的原因' 2015-05-30'。

据我所知,在Hive中没有直接减去月份的方法。您可以考虑的解决方案:

  1. 减去60天,但这不会给您准确的结果。
  2. 编写自定义UDF以返回2个月前的日期。
  3. 在脚本中计算日期,并将其传递给配置单元。