请写出SparkSQL语句

img


A 和B两个表的 日期都是日期型的
求A表和B表地点相同且 B表的时间小于A表时间1天的所有数据 如图黄色行
求A表和B表地点相同且 B表的时间小于A表时间1天的所有数据 如图黄色行
求A表和B表地点相同且 B表的时间小于A表时间1天的所有数据 如图黄色行

img

img

img



```sql

select A.*,B.*
from A
inner join B on A.didian=b.didian
where substr(A.riqi,8,2) - substr(B.riqi,8,2) <=1
and substr(A.riqi,8,2) - substr(B.riqi,8,2) >0;

img

有三条,第二条也是的,我用hive操作的,hive和sparkSQL差不多,不想用substr,使用split(字段,'\\.')[2] 结果也是一样的



![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/759660841956117.png "#left")

select A表.*,B表.* from A表 
inner join B表 
on A表.didian = B表.didian

where 
(select dateDiff(A表.riqi,B表.riqi) )> 1 and A表.riqi > B表.riqi

关于datediff我也遇到过,希望对你有帮助https://blog.csdn.net/weixin_43387909/article/details/121858429?spm=1001.2014.3001.5501

vertica 的日期差可以用以下语句:

select A.*,B.* from A left join B on A.didian=B.didian where DATEDIFF(day, B.riqi, A.riqi)<=0