问题
在hive中,经常需要进行日期的计算,可是,经常会出现这样一种情况,hive仓库中日期的存储格式是yyyyMMdd,例如20220505,在进行日期的计算时,hive支持的函数例如,add_months 仅识别yyyy-MM-dd格式的函数,如果输入yyyyMMdd的参数,返回结果是null。所以我们在对日期的字段进行计算时,优先需要进行格式的转换,将yyyyMMdd转换成yyyy-MM-dd格式。
需要注意的是,字符串日期格式化仅支持yyyy-MM-dd转为yyyyMMdd,不支持yyyyMMdd转为yyyy-MM-dd,转化后为null。
解决
解决日期格式化最好的方法就是将日期格式转化为时间戳,再转换成需要的格式
举例:将yyyyMMdd HH:mm:ss格式的字符串时间 20220505 05:05:05 转换为yyyy-MM-dd HH:mm:ss 格式 2022-05-05 05:05:05
from_unixtime(unix_timestamp('20220505 05:05:05','yyyyMMdd HH:mm:ss'),'yyyy-MM-dd HH:mm:ss')