HIVE脚本执行报错:from_timestamp函数无效,请求技术支持
问题解决方法
错误原因
Hive中不存在from_timestamp这个内置函数,这是导致编译报错SemanticException [Error 10011]: Invalid function from_timestamp的直接原因。
替代方案
根据你的需求(将日期时间字段减1天后格式化为yyyy-MM-dd),提供以下几种可行的Hive查询写法:
- 使用
date_format函数(推荐,Hive 2.1.0及以上版本支持)date_format是Hive专门用于格式化日期/时间戳的函数,语法适配你的场景:
select date_format(cast(mytime as timestamp) - interval 1 day, 'yyyy-MM-dd') from table;
注意:Hive中
interval的标准语法是interval '1' day,部分版本支持简化写法interval 1 day,如果报错可以改为标准格式。
- 旧版本Hive兼容写法(使用
from_unixtime+unix_timestamp)
如果你的Hive版本低于2.1.0,date_format可能未被支持,可改用这组函数组合:
select from_unixtime(unix_timestamp(cast(mytime as timestamp) - interval 1 day), 'yyyy-MM-dd') from table;
- 更简洁的写法(直接使用
date_add)
由于mytime本身是标准的日期时间字符串(如2022-10-05 00:00:00),date_add函数可以直接接收该格式的字符串并进行日期运算,返回结果默认就是yyyy-MM-dd格式:
select date_add(mytime, -1) from table;
例如输入2022-10-05 00:00:00,该语句会直接返回2022-10-04,完全满足需求。
内容的提问来源于stack exchange,提问作者Newbieone
相关产品推荐
相关产品推荐

