配置单元在select语句中使用current_date时更改current_date格式

时间:2018-09-26 22:53:42

标签: hive hiveql

我在Hive中有一个表,它被load_date分区

现在我要从此表中选择数据,其中load_datetoday

select * from table where load_date = current_date;

select * from table where load_date = 2018-09-26;

但是我拥有的date_formatyyyy_MM_dd,而current_dateyyyy-MM-dd格式。

如何使用yyyy_MM_dd附近的current_date查询我的表

我想要的是在where子句中使用current_date时

select * from table where load_date = 2018_09_26;

2 个答案:

答案 0 :(得分:1)

请在下面做

select * from table where load_date = date_format(current_date, 'yyyy_MM_dd');

这会将date formatyyyy-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}';

重新加载选项(如果适用)是微不足道的;