在Hive中使用Month()的MM中的月份

时间:2017-10-10 03:30:38

标签: hive hiveql monthcalendar

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

month()仅产生单个数字,直到九月,即Jan返回1而不是01。需要帮助来处理这个问题。

我正在使用此输出使用SELECT提供给另一个TO_DATE查询。

1 个答案:

答案 0 :(得分: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
Hive 2.1.0之前的

date_sub()函数(HIVE-13248)返回类型是一个String,因为创建方法时不存在Date类型。见这里:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF