技术栈:SQL小技巧:本月、上月、去年同期

技术栈:SQL小技巧:本月、上月、去年同期

利用hive内置的动态参数也是可以取到本月、上月和去年同期

如果每个月1号要发送上个月的数据,以及环比上上个月数据,以及同比去年同期的数据:

-- 获取本月
${yyyyMM-1M}


-- 上月
${yyyyMM-2M}


--去年同期
${yyyyMM-13M}


-- 列如dt是yyMMdd格式,利用以下语句就可以取到想要的数据了
 substr(dt,0,6) in (${yyyyMM-1M},${yyyyMM-2M},${yyyyMM-13M})

是不是超级方便,但是不是所有的hive平台都支持,公司hive内置的时间动态参数仅限公司内可用,得看你们公司有没有开发这块的功能。

技术栈:SQL小技巧:本月、上月、去年同期

所以呢,还是要了解一下通用的写法,写法有许多,这里介绍一种写的相对比较短的语法:

-- 获取当前天
select current_date()


-- trunc返回日期最开始的年份(yyyy)/月份(MM)
--获取本月第一天
select trunc(current_date(),'MM') 


-- 获取上月第一天
select trunc(add_months(current_date(),-1),'MM') 


-- *****获取上个月整月
dt>=trunc(add_months(current_date(),-1),'MM') 
and dt<trunc(current_date(),'MM') 


-- 获取上上月第一天
select  trunc(add_months(current_date(),-2),'MM') 


-- ******获取上上个月整月
dt>=trunc(add_months(current_date(),-2),'MM') 
and dt<trunc(add_months(current_date(),-1),'MM') 


-- ******获取去年同月
dt>=trunc(add_months(current_date(),-13),'MM')
and dt<trunc(add_months(current_date(),-12),'MM')

技术栈:SQL小技巧:本月、上月、去年同期

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 共2条

请登录后发表评论