Месяц в ММ, используя Month() в Hive

Select * from concat(YEAR(DATE_SUB(MAX(Column_name),60),MONTH(DATE_SUB(MAX(Column_name),60),-01)

month() возвращает только одну цифру за несколько месяцев до сентября, т.е. январь возвращает 1 вместо 01, Нужна помощь в решении этого.

Я использую этот вывод для передачи другому SELECT запрос с использованием TO_DATE,

1 ответ

Решение

month() функция возвращает целое число, поэтому нет начального нуля. Ты можешь использовать lpad(month,2,0) функция для форматирования месяца:

hive> select lpad(month('2017-09-01'),2,0);
OK
09
Time taken: 0.124 seconds, Fetched: 1 row(s)
hive> select lpad(month('2017-10-01'),2,0);
OK
10
Time taken: 0.433 seconds, Fetched: 1 row(s)

В качестве альтернативы вы можете использовать substr() извлечь год и месяц с даты:

hive> select substr('2017-10-01',1,4) as year, substr('2017-10-01',6,2) as month;
OK
year    month
2017    10

Функция date_sub() до Hive 2.1.0 (HIVE-13248) возвращала тип String, поскольку при создании метода тип Date не существовал. Смотрите здесь: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

Другие вопросы по тегам