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')

留言

熱門文章