FAQ-or或in分区条件时数据查询不准确
更新时间: 2024-03-11 02:43:21
阅读 1788
问题描述/异常栈
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)了
作者:刘思伟
文档反馈
以上内容对您是否有帮助?