2017-01-10 7 views
2

Привет Я пытаюсь извлечь месяц и год часть столбца временной отметки в улье, используя приведенную ниже запросHive - месяц и год из временной метки столбца

select from_unixtime(unix_timestamp(upd_gmt_ts,'yyyyMM')) from abc.test; 

Результат выглядит 2016-05-20 01: 8:48

желаемый результат должен быть 201605

Цените любые предложения.

+0

проверить это 'выбрать date_format (upd_gmt_ts , 'yyyyMM') от abc.test; ' – mrsrinivas

ответ

5

Я предпочитаю использовать улей date_format() (от улья 1.2.0). Он поддерживает шаблоны Java SimpleDateFormat.

date_format() принимает date/timestamp/string. Таким образом, окончательный запрос будет

select date_format(upd_gmt_ts,'yyyyMM') from abc.test; 

Edit:

SimpleDateFormat приемлемые примеры моделей.

enter image description here

+1

Спасибо за решение ... это сработало для меня! – divyanair

1

Вы можете использовать CONCAT и FROM_UNIXTIME, как показано ниже:

SELECT CONCAT(YEAR(FROM_UNIXTIME(1468215093)), MONTH(FROM_UNIXTIME(1468215093))) AS YEAR_MONTH 

В запросе:

SELECT CONCAT(YEAR(FROM_UNIXTIME(upd_gmt_ts)), MONTH(FROM_UNIXTIME(upd_gmt_ts))) AS YEAR_MONTH 
FROM abc.test; 
+0

Спасибо за запрос .. но это дало мне semanticException. не работает должным образом. – divyanair

+0

@divyanair какая ошибка вы получили? –

+0

FAILED: SemanticException [Ошибка 10014]: Строка 1:19 Неверные аргументы 'upd_gmt_ts': Нет соответствующего метода для класса org.apache.hadoop.hive.ql.udf.UDFFromUnixTime с (меткой времени). Возможные варианты: _FUNC_ (bigint) _FUNC_ (bigint, string) _FUNC_ (int) _FUNC_ (int, string) – divyanair

0

Пожалуйста, используйте следующий запрос

SELECT YEAR(FROM_UNIXTIME(unix_timestamp()))*100 + MONTH(FROM_UNIXTIME(unix_timestamp())) 
0

Чтобы увидеть дату в формате yyyy-mm-dd hh:mm:ss, вы можете использовать его, как показано ниже:

select to_utc_timestamp(col_name, 'PST') * from table;