Access 2010筛选4年前日期查询遇参数弹窗:求修改方案
搞定Access 2010里DATEADD弹框要输入year的问题
嘿,我知道你现在遇到的麻烦——运行SQL时弹出要输入year的对话框,这其实是Access的DATEADD函数语法和你写的不匹配导致的。
首先说核心问题:Access里的DATEADD,第一个参数(也就是要加减的时间单位)必须是带引号的字符串,而且年份的正确写法是"yyyy",不是你用的yy。另外,Access里获取当前日期的标准函数是Date(),虽然DATE()有些时候能凑合用,但还是用标准写法更稳妥。
另外还要提醒你:你说要筛选“距今4年以上”的日期,那应该是日期比4年前的今天更早对吧?那你原来的>=写反了,应该改成<=——不然你筛出来的是最近4年的记录,刚好和需求相反。
给你改好的完整SQL代码:
SELECT * FROM ([Module] INNER JOIN Teilnahme ON Module.ID = Teilnahme.Modul) INNER JOIN Mitarbeiter ON Teilnahme.[Mitarbeiter-E-Mail] = Mitarbeiter.E_Mail WHERE (((Module.Name)="ISM Forum") AND Teilnahme.Teilnahmedatum <= DATEADD("yyyy", -4, Date()));
几个关键修改点:
- 把
DATEADD(yy,-4,DATE())改成DATEADD("yyyy", -4, Date()):给时间单位加上双引号,用Access认可的"yyyy"作为年份间隔符,同时换成标准的Date()函数获取当前日期。 - 把条件里的
>=换成<=:确保筛选的是4年之前的旧记录,符合你“距今4年以上”的要求。
这样改完之后,就不会再弹出输入year的对话框了,查询也能准确拿到你要的数据~
内容的提问来源于stack exchange,提问作者najre
相关产品推荐
相关产品推荐

