2015-09-11 2 views
0

Я новый пчела, чтобы улей, и вам нужна ваша помощь. Требование mY - получить наивысшую дату из таблицы, а тип данных даты - строка. Я попытался с max(), но не работал для строкового типа данных ..., пожалуйста, помогите мне в этом.Самая высокая дата из таблицы hive со строковыми данными типа

+1

Какой формат строки? возможно, некоторые примеры данных. – luoluo

+0

20150908 (yyyyMMdd) - это формат моего столбца даты и создается как строковый тип данных в таблице – Ramya

ответ

3

Используйте встроенные функции даты unix_timestamp(string date, string pattern).

unix_timestamp covert a string date до unix_timestamp как int, что сопоставимо.

Предположим, что имя вашей таблицы t и столбец времени tt.

select max(unix_timestamp(tt, 'yyyyMMdd')) from t найдет максимальное unix_timestamp для вас, который является последней датой

+0

Привет, это сработало для меня: выберите max (cast (cpd_dt as int)) из предела таблицы 1 – Ramya

+1

Ну, в вашем случае это может работать. Но что, если формат времени - это что-то вроде '2015-09-08' – luoluo

2

Вы утверждающий MAX не работает на струнных улья, но на самом деле это делает:

Select MAX(dt) FROM (Select explode(Array("20150103", "20150102")) as dt) a; 

Пока строка даты находится в формате, который может быть отсортирован по лексикографии, MAX должен работать нормально.

Смежные вопросы