Spark和Hive中时间计算的差别
String beginTimeSql = "select from_unixtime(unix_timestamp(date_sub('"+invokeBean.getBusinessDate()+"',"+value+"-1 ),'yyyy-mm-dd'),'yyyymmdd')";
hive:
select from_unixtime(unix_timestamp(date_sub('2020-07-15',60-1 ),'yyyy-mm-dd'),'yyyymmdd');
结果:20200517
spark:
spark.sql("select from_unixtime(unix_timestamp(date_sub('2020-07-15',60-1 ),'yyyy-mm-dd'),'yyyymmdd')").show;
结果:20200017
解决:不在Spark中计算,用java计算好传参
正确使用方式
:
hive:
select from_unixtime(unix_timestamp('20201223134238','yyyyMMddHHmmss'),'yyyy-MM-dd HH:mm:ss');
结果:2020-12-23 13:42:38
spark:
spark.sql("select from_unixtime(unix_timestamp('20201223134238','yyyyMMddHHmmss'),'yyyy-MM-dd')").show;
结果:2020-12-23