我在Hive
中有一个表,它被load_date
分区
现在我要从此表中选择数据,其中load_date
是today
select * from table where load_date = current_date;
select * from table where load_date = 2018-09-26;
但是我拥有的date_format
是yyyy_MM_dd
,而current_date
是yyyy-MM-dd
格式。
如何使用yyyy_MM_dd
附近的current_date
查询我的表
我想要的是在where子句中使用current_date时
select * from table where load_date = 2018_09_26;
答案 0 :(得分:1)
请在下面做
select * from table where load_date = date_format(current_date, 'yyyy_MM_dd');
这会将date format
从yyyy-MM-dd
转换为yyyy_MM-dd
答案 1 :(得分:1)
在where
子句中使用类似load_date = date_format(current_date, 'yyyy_MM_dd')
的函数将防止分区修剪。您有两种选择:以yyyy-MM-dd
日期格式重新加载表,或在where
子句中使用之前计算变量。
这是在外壳中以“ yyyy_MM_dd”格式计算日期并将其作为参数传递给脚本的方法:
#!/bin/bash
date_var=$(date +'%Y_%m_%d')
#call your script
hive -hivevar date_var="$date_var" -f your_script.hql
并在脚本中使用变量:
select * from table where load_date = '${hivevar:date_var}';
重新加载选项(如果适用)是微不足道的;