Access查询中IIf函数嵌入Between日期筛选失效问题求助
解决查询中IIf嵌入Between导致的空结果问题
你遇到的核心问题是IIf函数无法直接返回SQL关键字(如Between)作为条件分支。IIf是返回具体值的函数,不是用来拼接条件语句的,所以你原来的写法会被数据库当成值而非逻辑判断,自然查不到数据。
正确的条件写法
把逻辑拆成完整的条件判断,或者用IIf返回日期上限,结合范围判断:
写法1:拆分逻辑分支
(Weekday(Date()+1) = 6 AND 预订日期 Between Date()+1 And Date()+3) OR (Weekday(Date()+1) <> 6 AND 预订日期 = Date()+1)
写法2:用IIf返回日期上限(更简洁)
预订日期 >= Date()+1 AND 预订日期 <= IIf(Weekday(Date()+1)=6, Date()+3, Date()+1)
逻辑说明
- 当次日是周五(
Weekday(Date()+1)=6)时,预订日期范围是次日到Date()+3(周五、周六、周日) - 其他情况,预订日期仅匹配次日(因为上限和下限都是
Date()+1)
注意点
确认Weekday函数的起始周设置:不同数据库/工具的Weekday起始值可能不同,比如Access中默认Weekday(日期, vbSunday)是周日=1、周五=6,符合你的需求;如果是vbMonday起始,周五会是5,需要对应调整数值。
内容的提问来源于stack exchange,提问作者Scrans0n
相关产品推荐
相关产品推荐

