Hive 用于过滤信用卡的配置单元功能

Hive 用于过滤信用卡的配置单元功能,hive,Hive,有人能解释一下我听不懂的代码吗 SELECT li.user_id FROM loan_info li INNER JOIN credit_card_info cci ON li.user_id = cci.user_id WHERE CAST(cci.outstanding_balance AS double) = 0.0 AND datediff(from_unixtime(unix_timestamp(), 'yyyy-MM-dd'), li.last_payment

有人能解释一下我听不懂的代码吗

SELECT li.user_id 
FROM loan_info li 
     INNER JOIN credit_card_info cci ON li.user_id = cci.user_id 
WHERE CAST(cci.outstanding_balance AS double) = 0.0 
  AND datediff(from_unixtime(unix_timestamp(), 'yyyy-MM-dd'), li.last_payment_date) >= 30;

SELECT li.user_id 
FROM loan_info li INNER JOIN credit_card_info cci ON li.user_id = cci.user_id 
WHERE CAST(cci.outstanding_balance AS double) = 0.0 
  AND datediff(from_unixtime(unix_timestamp(), 'yyyy-MM-dd'), li.last_payment_date) >= 30;

此筛选器表示上次付款在当前日期前30天或更长时间:

datediff(from_unixtime(unix_timestamp(), 'yyyy-MM-dd'), li.last_payment_date) >= 30
最好使用
current\u date
而不是这个:
来自unixtime(unix\u timestamp(),'yyyy-MM-dd')

由于查询范围的current_date常量是固定的,所以它的效率更高。并为每行计算。另见此答案:

datediff(current_date, li.last_payment_date) >= 30