在 Impala 中按组减去最大、最小日期

Subtract Max, Min Date by Group in Impala

我有一个查询,我在 impala 中找到用户的最大和最小日期:

select max(id_date) as last_tran
       ,min(id_date) as first_tran
       ,user
from table_1 a 
join table_2 d
on a.id = d.id
group by 3

然后我想减去用户的最小和最大日期。

在 Impala 中,我尝试使用 date_sub 函数,但它不起作用。

select date_sub(last_tran, first_tran) as date_len
, user
from
(select max(id_date) as last_tran
       ,min(id_date) as first_tran
       ,user
from table_1 a 
join table_2 d
on a.id= d.id
group by 3) time
group by 1,2

似乎 date_sub 函数的第二个参数必须是代表天数的整数。

我该如何解决这个问题?

要完成这项工作,datediff 函数应该像这样使用:

select datediff(last_tran, first_tran) as date_len
, user
from
(select max(id_date) as last_tran
       ,min(id_date) as first_tran
       ,user
from table_1 a 
join table_2 d
on a.id= d.id
group by 3) time
group by 1,2

函数开始日期和结束日期之间的天数 returns。从 documentation 看来,天数的 return 值似乎无法更改。