输入数据
SNO | Name | Salary | HireDate
------------------------------------------
1 | A | 10 | 01-13-2014
2 | B | 20 | 11-15-2014
3 | C | 3 | 05-03-2015
4 | D | 4 | 07-03-2015
5 | E | 5 | 12-03-2015
6 | F | 60 | 25-03-2015
7 | G | 70 | 30-03-2015
最终输出数据 我想使用配置单元查询
仅获取当前月份数据SNO | Name | Salary | HireDate
----------------------------------------
3 | C | 3 | 05-03-2015
4 | D | 4 | 07-03-2015
5 | E | 5 | 12-03-2015
6 | F | 60 | 25-03-2015
7 | G | 70 | 30-03-2015
答案 0 :(得分:1)
在 shell脚本:
中执行此操作curmon=`date +%m-%Y`
cusdate="01-$curmon";
$HIVE_HOME/bin/hive -e "select * from tablename where HireDate>$cusdate;"
curmon
将存储当前月份和年份。
cusdate
将存储本月的第1天。
Hive
查询将显示超过本月第一天的所有结果。 (根据您的要求更改表名和列)
答案 1 :(得分:0)
只需在Hive中使用current_date
和日期时间功能即可。这可能是最简单的方法:
select id.*
from inputdata id
where year(hiredate) = year(current_date()) and
month(hiredate) = month(current_date());
编辑:
刚刚尝试了这一点,current_date()
至少不是Hive 0.14的一个实现,尽管有文档。所以,你可以尝试:
select id.*
from inputdata id
where year(hiredate) = year(from_unixtime(unix_timestamp())) and
month(hiredate) = month(from_unixtime(unix_timestamp()));