SFMC SQL查询异常:无法获取未来90天内Check_In_Date__c的记录
SFMC SQL查询未来90天记录的问题解决
你的需求是获取今日起未来90天内Check_In_Date__c对应的记录,但原查询的逻辑完全搞反了,导致返回0条数据:
原查询的错误分析
第一个查询:
WHERE o.Check_In_Date__c < dateadd(day, -90, GETDATE())dateadd(day, -90, GETDATE())得到的是90天前的日期,这个条件是找比90天前更早的记录,和你要的「未来90天」完全无关,自然没有匹配数据。第二个查询:
WHERE DATEDIFF(day, o.Check_In_Date__c, DATEADD(day, -90, GETDATE())) = 2这是计算
Check_In_Date__c到90天前的天数差等于2,也就是只找「92天前」的记录,范围极小,也不可能匹配到你需要的80条数据。
正确的SQL写法
要获取今日到未来90天内的记录,需要把时间范围调整为今天 ≤ Check_In_Date__c ≤ 今天+90天,推荐用BETWEEN同时去掉时间部分(避免时分秒干扰):
WHERE o.Check_In_Date__c BETWEEN CAST(GETDATE() AS DATE) AND DATEADD(day, 90, CAST(GETDATE() AS DATE))
如果不需要包含今天,只需要未来90天内的记录,改成:
WHERE o.Check_In_Date__c > CAST(GETDATE() AS DATE) AND o.Check_In_Date__c <= DATEADD(day, 90, CAST(GETDATE() AS DATE))
内容的提问来源于stack exchange,提问作者Sophia
相关产品推荐
相关产品推荐

