You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access 2007中使用DATEADD函数出现语法错误求助

Access 2007 查询中添加2个工作日的解决办法

你碰到的编译错误,主要是两个问题:一是Access查询表达式里,DATEADD的间隔参数用双引号容易出现识别问题,二是你用错了DATEADD的间隔类型——"w"根本不是用来添加工作日的,它的作用是把日期往后推指定周数的同星期几,和你要的跳过周末的需求完全不匹配。

下面给你两种不用VBA就能实现需求的方法:

方法1:纯表达式判断(无需额外加载库)

如果只需要排除周六周日、不用考虑节假日,直接用嵌套IIf写逻辑:

NewWorkDate: 
IIf(Weekday([MyDateField], vbMonday) = 5, [MyDateField]+4,
IIf(Weekday([MyDateField], vbMonday) = 6, [MyDateField]+3,
[MyDateField]+2))

简单说明:

  • Weekday([MyDateField], vbMonday) 将周一设为一周的第1天,周五对应第5天,周六对应第6天
  • 原日期是周五时加4天:跳过周六、周日,直接到下周二
  • 原日期是周六时加3天:直接到下周二
  • 其他日期直接加2天即可

方法2:用内置Workday函数(更简洁)

Access 2007支持Workday函数,但需要先加载对应库:

  1. 打开查询设计视图,点开表达式生成器
  2. 点击「工具」→「引用」,勾选「Microsoft Office xx.x Access Database Engine Object Library」(xx.x为你的Office版本号),点击确定
  3. 之后直接使用:
NewWorkDate: Workday([MyDateField], 2)

这个函数会自动跳过周六和周日,如果需要排除节假日,还可以添加第三个参数指定节假日的日期集合。

另外提一句,如果你原本是想给日期加2周,正确写法应该是DATEADD('ww',2,[MyDateField])(用单引号包裹间隔参数),但这和你要的工作日需求无关。

内容的提问来源于stack exchange,提问作者Fordy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 15:54:17