所有内容均为测试可用,真实
当前位置:绿茶加糖-郭保升 > 数据库资料 > 正文

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

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

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

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
-- 获取本月${yyyyMM-1M}
-- 上月${yyyyMM-2M}
--去年同期${yyyyMM-13M}
-- 比如dt是yyMMdd格式,利用以下语句就可以取到想要的数据了 substr(dt,0,6) in (${yyyyMM-1M},${yyyyMM-2M},${yyyyMM-13M})

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

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

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
-- 获取当前天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')

版权保护: 本文由 绿茶加糖-郭保升 原创,转载请保留链接: https://www.guobaosheng.com/shujuku/399.html