hive月份加减
数据库中月份存储方式是202010,类型是string,我想去匹配202009
1.拼接字符串,形成20201001的形式
2.unix_timestamp转换成unix时间戳,unix时间戳就是1970-01-01至今的秒数
3.from_unixtime把unix时间戳转成标准格式'yyyy-mm-dd'
4.add_months作用于标准格式
5.匹配的另外一边就是 前面三步便可
add_months(from_unixtime(unix_timestamp(concat(a.field,'01'),'yyyymmdd'),'yyyy-mm-dd'),-1) =
from_unixtime(unix_timestamp(concat(b.field,'01'),'yyyymmdd'),'yyyy-mm-dd')
步骤1可以变一下,可以直接用unix_timestamp('202010','yyyymm')转成unix时间戳
unix_timestamp把类似日期格式转换成unix时间戳,只要告诉他解析格式
from_unixtime可以把unix时间戳转成希望的日期格式,包括yyyymm
要直接实现202010减去一个月202009,202010是string,可以这样:
SELECT from_unixtime(unix_timestamp(add_months(from_unixtime(unix_timestamp('202010','yyyymm'),'yyyy-mm-dd'),-1),'yyyy-mm-dd'),'yyyymm')
留言
張貼留言