FAQ-or或in分区条件时数据查询不准确
    更新时间: 2025-10-29 11:17:20
    
    阅读 2541
    
问题描述/异常栈
select *  
from  ads_data_product.user_preference_djradio_c1_dd
where 
dt = date_sub('${etl_date}',1)
or dt = add_months(trunc('${etl_date}','MM'), 0)类似这样的sql查询不出结果,但是单独拿出一个分区是可以的
解决方案
select *  
from  ads_data_product.user_preference_djradio_c1_dd
where 
cast(dt as timestamp) = date_sub('${etl_date}',1)
or cast(dt as timestamp) = add_months(trunc('${etl_date}','MM'), 0)手动将时间条件,cast成timestamp类型
问题原因
由于dt是string类型,单独是dt = xxx,string = timestamp有个隐式转换可以成立。加了or就变成dt in (xxx1, xxx2)了作者:刘思伟
文档反馈
                    
                    
                    
                    
                 扫码
 扫码 复制
 复制 导出
 导出 
                         
                     
     
     
    
以上内容对您是否有帮助?