计算 DateDiff returns 条件中的数据类型不匹配的查询

Query that calculates a DateDiff returns a Data Type Mismatch in criteria

我正在尝试创建一个查询,查询 returns 距过期日期还有不到一个月的产品。 在一列中,我根据产品的接收日期使用 DateAdd 来了解到期日期。然后在另一列中,我使用 DateDiff 来计算截止日期之前的天数,以便我可以应用 <30 的标准。 问题是查询正常运行,但是当我在 Criteria 中写入 <30 时,它给我一个数据类型不匹配错误。我尝试了很多不同的方法来避免这种情况,例如写入 DateAdd

产品table |产品名称 |预计持续时间 | | ---------- | ------------------ | |一个 | 365 | |乙 | 30 |

人Table: |人 |产品名称 |接收日期 | | ------ | ---------- | ---------- | |姓名1 |一个| 12-05-2020 | |姓名2 |乙 | 26-08-2020 |

我的第一个意图是创建一个基于 ReceiveDate 和 EstimatedDuration 计算到期日期的查询。之后我想知道下个月到期的所有产品,例如。

SQL代码是:

SELECT [Products].[ProductName], [People].[ReceiveDate], [Products].EstimatedDuration, DateAdd("w",[Products].[EstimatedDuration],[People].[ReceiveDate]) AS ExpirationDate, DateDiff("d",Date(),[ExpirationDate]) AS Days
FROM [Products] INNER JOIN [People] ON [Products].ProductName= [People].[ProductName]
WHERE ((([Products].EstimatedDuration) Is Not Null)) AND ((DateDiff("d",Date(),[ExpirationDate]))<30));

WHERE 条件是因为在我的产品中 table 我没有在所有产品中使用 EstimatedDuration。

提前感谢您的帮助!

您可能需要扩展语法:

SELECT 
    [Products].[ProductName], 
    [People].[ReceiveDate], 
    [Products].EstimatedDuration, 
    DateAdd("w",Nz([Products].[EstimatedDuration], 0),[People].[ReceiveDate]) AS ExpirationDate, 
    DateDiff("d",Date(),[ExpirationDate]) AS Days
FROM 
    [Products] 
INNER JOIN 
    [People] ON [Products].ProductName= [People].[ProductName]
WHERE 
    [Products].EstimatedDuration Is Not Null 
    AND 
    DateDiff("d",Date(), DateAdd("w",Nz([Products].[EstimatedDuration], 0), [People].[ReceiveDate])) < 30;