to_date函数在hive、presto、spark中的区别

时间:2025-04-08 16:38:40

to_date函数在 hive、presto、spark中都有,但是差别还是挺大的。

1、hive

select to_date('20220501','yyyymmdd')

报错:
: Error while compiling statement: 
FAILED: SemanticException [Error 10015]: 
Line 1:15 Arguments length mismatch ''yyyymmdd'': to_date() requires 1 argument, got 2

从报错信息可以看出,to_date函数要求1个参数,但实际有2个。。。hive中的to_date函数有点鸡肋。

2、presto

select to_date('20220501','yyyymmdd')

输出:
_col0
2022-05-01

输出结果是正确的,按照 yyyymmdd 的格式来理解字符串 20220501,并转成了标准的日期

3、spark

select to_date('20220501','yyyymmdd')

输出:
2022-01-01

输出为 2022-01-01,完全无法理解。。。肯定是哪里出了问题。

在查询spark函数的资料后发现,是第2个参数 yyyymmdd写错了,应该改成 yyyyMMdd。

select to_date('20220501','yyyyMMdd')

输出:
2022-05-01