Месяц в ММ, используя 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