我正在将一些MySQL查询重写为HiveQL,但有一段时间我无法解决某些问题。
MySQL语法如下(bc_date
是一个日期):
WHERE date_format(bc_date, '%x-%v') >= date_format(CURRENT_DATE - INTERVAL 16 WEEK, '%x-%v')
如何在HiveQL中表达这一点?
我的Hive版本不支持
date_format
功能,该功能“自Hive 1.2.0起”可用 最佳答案
这是我的建议,它似乎有效。我将小于10的周数加0,以进行正确的字符串比较
concat(year(broadcast_time), '-', case when weekofyear(broadcast_time)<10 then concat(0,weekofyear(broadcast_time)) else weekofyear(broadcast_time) end ) >=
concat( year(date_sub(to_date(from_unixtime(unix_timestamp())),112)), '-', case when weekofyear(date_sub(to_date(from_unixtime(unix_timestamp())),112))<10 then concat(0,weekofyear(date_sub(to_date(from_unixtime(unix_timestamp())),112))) else weekofyear(date_sub(to_date(from_unixtime(unix_timestamp())),112)) end )