日期列的表格式为“ yyyyMMdd”,我正在使用以下函数转换为标准格式,以便可以执行HIVE日,月和年来获取各自的值。
(from_unixtime(unix_timestamp(cast(created_day as STRING) ,'yyyyMMdd'), 'yyyy-MM-dd'))
要获取当前年份的数据,我将从所有记录中获得的年份减去当前日期返回的年份,如果它返回零,则表示该年份。
(year(current_date()) - year(from_unixtime(unix_timestamp(cast(created_day as STRING) ,'yyyyMMdd'), 'yyyy-MM-dd'))) = 0
问题:如果当前日期为一月,我将仅获得一月数据月,但是我需要获取从二月(去年)到一月(当前年)的数据?
我还需要扩展它以获取最近的24个月。
答案 0 :(得分:0)
我总是在Hive之外设置日期范围参数,并将它们作为参数传递,因为这样可以提高可重复性和可测试性。
select <fields> from <table> where created_day between ${hiveconf:start_day} and ${hiveconf:end_day}