Given a date column with a value 2020-05-01
, I want to return 2020-Q2
. The QUARTER()
function is not available due to the Hive version we are using.
I can get the quarter number with: (INT((MONTH(yyyy_mm_dd)-1)/3)+1)
. When I try to combine this with the YEAR()
function and strings, I get null
:
x
year(yyyy_mm_dd)+"-"+"Q"+(INT((MONTH(yyyy_mm_dd)-1)/3)+1) as time_frame
How can I properly concatenate this to get the desired string of null?
Using this query:
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
Throws this error:
Error while compiling statement: FAILED: ParseException line 4:9 cannot recognize input near ‘|’ ”-Q” ‘|’ in expression specification
Advertisement
Answer
This does the trick:
concat(year(yyyy_mm_dd), '-Q', INT((MONTH(yyyy_mm_dd)-1)/3) + 1) as time_frame