如何比较两个日期 Month
以及 Day
仅在spark sql查询中?我的表有两列, date1
以及 date2
. 我需要比较一下,看看 dd
& MM
部分 date1
(组合)大于或等于 date2
并相应地设置一个标志。
例如:
date1 | date2 | flag
2017-05-05 | 2016-10-15 | N
2019-06-22 | 2020-02-06 | Y
2020-10-09 | 2020-10-09 | E
我尝试了类似这样的方法来提取所需的部分(就像在其他rdbms中一样),但无法让它工作。我期望函数返回 MM
以及 dd
作为 int
我可以比较一下,但这又是另一个 date
```
select
date1,
date2,
case when (date_trunc('MM', date1) > date_trunc('MM', date2) ) AND (date_trunc('dd', date1) > date_trunc('dd', date2) )
then 'Y'
when (date_trunc('MM', date1) = date_trunc('MM', date2) ) AND (date_trunc('dd', date1) = date_trunc('dd', date2) )
then 'E'
else 'N'
end as flag
在sparksql2.4中使用查询
谢谢
1条答案
按热度按时间ne5o7dgx1#
下面的代码可能有助于解决您的问题,
方法1:使用spark sql和
month
以及dayofmonth
内置方法方法2。使用spark sql
datediff
功能三。另一种方法是使用df表达式而不是sparksql,