2017-10-10 65 views
1
Select * from concat(YEAR(DATE_SUB(MAX(Column_name),60),MONTH(DATE_SUB(MAX(Column_name),60),-01) 

month()产量仅位使用一个月()数月至九月即一月返回1而不是01。在处理这件事上需要帮助。月在MM在蜂巢

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

回答

0

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()蜂巢2.1.0之前的功能(HIVE- 13248)返回类型是一个String,因为创建方法时不存在Date类型。请看这里:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF