上周六的HIVE日期

时间:2015-12-06 19:47:48

标签: hive hiveql

我试图使用以下方式在YYYY-MM-DD格式的HIVE中找到上周六的日期:

SET DATE_DM2=date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),cast(((from_unixtime(unix_timestamp(), 'u') % 7)+1) as int));

但这是错误

1 个答案:

答案 0 :(得分:1)

更改此行:

c = "hive -e 'use Data; SELECT * FROM table1 WHERE partitiondate='${DATE_D}';'"

成:

c = "hive -e \"use Data; SELECT * FROM table1 WHERE partitiondate='{DATE_D}';\"".format(DATE_D=DATE_D)

format的电话是@Mai提到的。对于打印c,print c将在运行时向您显示c的值,因此您将知道该值是否符合您的预期。

PS 调用commands.getoutput不仅会获取行,而且会在命令行中调用hive的所有标准输出,并将其存储在单个字符串中 - 这意味着你如果你需要处理那些行,可能需要做一些解析。或者更好的是,请查看HiveClient