如何解决HIVE中时间戳代码执行报错问题
Hive兼容的日期处理代码修改方案
第一段:获取当月第一天
原Impala代码因函数兼容性问题在Hive中报错,Hive可通过更简洁的方式实现需求:
- 若
biz_dt是日期/时间戳类型:
select date_format(trunc(biz_dt, 'MM'), 'yyyy-MM-dd') as first_day_of_mth from x_table;
- 若
biz_dt是yyyyMM格式的字符串:
select date_format(trunc(to_date(biz_dt, 'yyyyMM'), 'MM'), 'yyyy-MM-dd') as first_day_of_mth from x_table;
第二段:日期逻辑修正(Hive兼容版)
原Impala代码存在逻辑冗余(date_add(..., -1)后又days_add(..., 1)等价于原日期),以下分两种场景提供兼容代码:
场景1:保留原逻辑(获取下月第一天)
select date_format(add_months(trunc(biz_dt, 'MM'), 1), 'yyyy-MM-dd') as biz_dt1 from x_table;
场景2:获取当月最后一天(修正冗余逻辑)
select date_format(date_add(add_months(trunc(biz_dt, 'MM'), 1), -1), 'yyyy-MM-dd') as biz_dt1 from x_table;
内容的提问来源于stack exchange,提问作者Newbieone
相关产品推荐
相关产品推荐

