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 .
month()
1
01
SELECT
TO_DATE
6ie5vjzr1#
month() 函数返回整数,这就是为什么没有前导零。你可以用 lpad(month,2,0) 设置月份格式的函数:
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() 从日期中提取年份和月份:
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
1条答案
按热度按时间6ie5vjzr1#
month()
函数返回整数,这就是为什么没有前导零。你可以用lpad(month,2,0)
设置月份格式的函数:或者你可以使用
substr()
从日期中提取年份和月份:hive 2.1.0(hive-13248)之前的date_sub()函数的返回类型是字符串,因为创建方法时不存在日期类型。请看这里:https://cwiki.apache.org/confluence/display/hive/languagemanual+udf