Hive在日期函数之间组合字符串后得到空值

nx7onnlm  于 2021-04-03  发布在  Hive
关注(0)|答案(2)|浏览(507)

给定一个日期列的值为2020-05-01,我想返回2020-Q2,由于我们使用的是hive版本,QUARTER()函数不可用。
我可以用以下方法得到季度数 (INT((MONTH(yyy_mm_dd)-1)/3)+1).当我尝试将其与YEAR()函数和字符串结合起来时,我得到null:

year(yyyy_mm_dd)+"-"+"Q"+(INT((MONTH(yyyy_mm_dd)-1)/3)+1) as time_frame

我怎样才能正确地连接这一点,以获得所需的null字符串?
使用这个查询。

select
    yyyy_mm_dd,
    year(yyyy_mm_dd) 
        || '-Q' 
        || INT((MONTH(yyyy_mm_dd)-1)/3) + 1 as time_frame
from
    schema.table1
where
    yyyy_mm_dd = '2019-01-01'
limit 1

抛出这个错误。
编译语句时出错:失败:parseexception第4:9行不能识别表达式规范中'|' ''-q'' '|'附近的输入。

s71maibg

s71maibg1#

在hive中,你可以使用标准运算符||

year(yyyy_mm_dd)
    || '-Q' 
    || INT((MONTH(yyyy_mm_dd)-1)/3) + 1 as time_frame
q5iwbnjs

q5iwbnjs2#

这样就可以了

concat(year(yyyy_mm_dd), '-Q', INT((MONTH(yyyy_mm_dd)-1)/3) + 1) as time_frame

相关问题