将日期从shell脚本传递到查询

时间:2012-08-07 23:05:12

标签: linux shell unix solaris hive

下面是我运行Hive查询的shell脚本。在这里我计算昨天的日期,我在where子句中传递了昨天的日期。但该查询对我不起作用。

#!/bin/bash
DATE_YEST=`TZ=GMT+48 date +%Y%m%d`
echo $DATE_YEST
hive -S -e 'SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=$DATE_YEST'

我正在运行上面的脚本 -

sh -x test.sh

我在where子句中传递DATE_YEST date的方式有什么问题吗?

1 个答案:

答案 0 :(得分:3)

试试这个:

#!/bin/bash
DATE_YEST=`TZ=GMT+48 date +%Y%m%d`
echo $DATE_YEST
echo "SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=$DATE_YEST"

输出将是:

20120806
SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=20120806

如果你需要选择周围的引号,请使用:

#!/bin/bash
DATE_YEST=`TZ=GMT+48 date +%Y%m%d`
echo $DATE_YEST
echo "\"SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=$DATE_YEST\""

输出将是:

20120806
"SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=20120806"

假设您想要引号,您的脚本将如下所示:

#!/bin/bash
DATE_YEST=`TZ=GMT+48 date +%Y%m%d`
echo $DATE_YEST
hive -S -e "\"SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=$DATE_YEST\""