month(mm)

wgx48brx  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(388)
Select * from concat(YEAR(DATE_SUB(MAX(Column_name),60),MONTH(DATE_SUB(MAX(Column_name),60),-01)

这个 month() 收益率只有个位数的月份,直到9月,即1月回报 1 而不是 01 . 需要帮助处理这个。
我正在用这个输出给另一个 SELECT 查询使用 TO_DATE .

6ie5vjzr

6ie5vjzr1#

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(hive-13248)之前的date_sub()函数的返回类型是字符串,因为创建方法时不存在日期类型。请看这里:https://cwiki.apache.org/confluence/display/hive/languagemanual+udf

相关问题