hive函数开发实践沉淀二

142 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情

接着上上一篇的大数据开发实践沉淀一中的案例分析,下面继续来深入分析那一句万能时间格式转换的代码。 如果大家不知道那句格代码是啥,可以回看一下之前的文章。

首先是讲解一下那样处理的原因,以上这样的处理是为了获得时间格式的结果,因为需要获取到指定时间的上个月的日期,这个时候需要传入的参数是时间,所以要先这样转换处理一下。这个也是非常好用的时间戳转换时间的方法,通过from_unixtime即可。


last_day(add_months(from_unixtime(unix_timestamp(cast(substr('${-1d_pt}',1,8) as string),'yyyyMMdd'),'yyyy-MM-dd'),-1))   -- 获得输入时间的上个月的最后一天

最后就是通过获得上个月和获得某个月的最后一天这两个函数将得到的时间再转换为指定的格式,再拼接上指定的数据,比如后缀或者前缀等等。

字符串的拼接用到的函数是concat()函数。有时候需求中会要求时间的长度为指定的长度,就可以用上这个函数了。

由此即可获得yyyy-MM-dd转换为yyyyMMdd的格式,并且是任意时间的格式,不管是获得某月的第一天还是最后一天,或者年的第一天或者最后一天,均可以套用该语句来实现。

如果不知道如何获得指定日期的,可以看一下我的历史文章,有讲到hive的日期函数,此处就不赘述啦。

如果大家有更好更简洁的时间格式转换代码,欢迎一起探讨。

还有几个hive中内置的比较好用的日期函数,再简单说明一下。

date_add()函数

date_add(string startdate,int days)

在当前时间基础上增加天数,获得新的时间。

此处输入的时间必须是yyyy-MM-dd这样的格式,否则获得结果是null。