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