如何找出月份之间的差异

vsikbqxv  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(379)

我试图找出两个月值之间的差异。输入月份值的格式为YYYYMM。我希望与字符连接的结果能够对表中的字段进行过滤。
例如,我想找出2019m04(即2019年4月)和2018m12(即2018年12月)之间的差异。这里期望的结果是04,所以我希望它与字母“t”连接起来。因此,我的过滤器将在t04字段上。
基本思想是基于month值(一个变量)动态地标识要应用过滤器的列。
我尝试过使用datediff,但没有得到任何结果。也许我做错了什么。。请帮忙!!
样本数据-
t01 t02 t03 t04 t05 t06
1.2 1.3 1.5 1.6 1.7 1.2
2.4 2.5 2.7 2.4 2.7 2.8

wtlkbnrh

wtlkbnrh1#

你可以转换成数字和做算术。大多数数据库支持 left() 以及 right() 字符串函数。
要将差值作为一个数字,可以执行以下操作:

  1. select ( ( cast(left(yyyymmm1, 4) as int) * 12 + cast(right(yyyymm1, 2) as int) - 1 ) -
  2. ( cast(left(yyyymmm2, 4) as int) * 12 + cast(right(yyyymm2, 2) as int) - 1 )
  3. ) as diff

然后你可以格式化这个你喜欢的。
在hive中,尝试以下操作:

  1. select ( ( cast(substr(yyyymmm1, 1, 4) as int) * 12 + cast(substr(yyyymm1, 5, 2) as int) - 1 ) -
  2. ( cast(substr(yyyymmm2, 1, 4) as int) * 12 + cast(substr(yyyymm2, 5, 2) as int) - 1 )
  3. ) as diff

相关问题