2016-04-06 2 views
0

Я переписываю некоторый запрос MySQL в HiveQL, и есть что-то, что я не смог прибить какое-то время.Улей. Выберите данные за последние N недель

синтаксис MySQL выглядит следующим образом (bc_date является дата):

WHERE date_format(bc_date, '%x-%v') >= date_format(CURRENT_DATE - INTERVAL 16 WEEK, '%x-%v') 

Как один выразить, что в HiveQL?

Моя версия улья не поддерживает функцию date_format, которая доступна «от улья 1.2.0»

+0

какая версия улья вы используете? – user1314742

+0

My Hive version 1.0.0 – Dennis

+0

Обязательно использовать тип 'date'? Я имею в виду, можно ли изменить тип на строку? – user1314742

ответ

0

Вот предложение у меня есть, и это, кажется, работает. Я добавляю 0 к неделям, которые меньше 10, для правильного сравнения строк

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) 
Смежные вопросы