我有专栏 hive
下表所示
testing_time
2018-12-31 14:45:55
2018-12-31 15:50:58
现在我想得到 distinct
值作为变量,以便在另一个查询中使用。
我做了如下的事情
abc=`hive -e "select collect_set(testing_time)) from db.tbl";`
echo $abc
["2018-12-31 14:45:55","2018-12-31 15:50:58"]
xyz=${abc:1:-1}
当我这么做的时候
hive -e "select * from db.tbl where testing_time in ($xyz)"
我得到下面的错误
Arguments for IN should be the same type! Types are {timestamp IN (string, string)
我到底犯了什么错?
取得成绩的正确方法是什么?
注意:我知道我可以在这个场景中使用子查询,但是我想使用variable来实现我的结果
1条答案
按热度按时间mkshixfv1#
问题是您正在比较时间戳(列)
testing_time
)带字符串(即。"2018-12-31 14:45:55"
),所以您需要将字符串转换为时间戳,您可以通过TIMESTAMP(string)
.下面是添加转换的bash脚本:
然后可以运行构造的sql查询: