在Impala中无法将DATE类型列转为字符串的问题求助
解决Impala中DATE类型转换的问题
看来你碰到了Impala早期版本对DATE类型支持不完善的坑,我来给你几个可行的解决方案:
1. 用date_format()函数转换DATE到字符串
直接cast DATE到STRING失败的话,试试Impala专门的日期格式化函数date_format(),它对DATE类型的兼容性更好:
SELECT date_format(t1.`date`, 'yyyy-MM-dd') FROM example;
这个函数会精准把DATE类型转换成你需要的2018-04-28格式字符串。
2. 获取DATE对应的Unix时间戳
不需要先转字符串,如果你用的是Impala 2.0及以上版本,unix_timestamp()可以直接接收DATE类型参数:
SELECT unix_timestamp(t1.`date`) FROM example;
如果你的版本确实过低不支持直接传DATE,先转成TIMESTAMP再处理也能解决问题:
SELECT unix_timestamp(cast(t1.`date` as TIMESTAMP)) FROM example;
3. 排查元数据与版本问题
- 如果你的表是从Hive同步过来的,执行
INVALIDATE METADATA example;刷新Impala元数据,确保它能正确识别DATE类型; - 条件允许的话,升级到Impala 2.0+版本,DATE类型的支持会完善很多,后续各类日期操作都会顺畅不少。
内容的提问来源于stack exchange,提问作者Hugo P.
相关产品推荐
相关产品推荐

