计算 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;
我正在尝试创建一个查询,查询 returns 距过期日期还有不到一个月的产品。
在一列中,我根据产品的接收日期使用 DateAdd 来了解到期日期。然后在另一列中,我使用 DateDiff 来计算截止日期之前的天数,以便我可以应用 <30 的标准。
问题是查询正常运行,但是当我在 Criteria 中写入 <30 时,它给我一个数据类型不匹配错误。我尝试了很多不同的方法来避免这种情况,例如写入 DateAdd 产品table
|产品名称 |预计持续时间 |
| ---------- | ------------------ |
|一个 | 365 |
|乙 | 30 | 人Table:
|人 |产品名称 |接收日期 |
| ------ | ---------- | ---------- |
|姓名1 |一个| 12-05-2020 |
|姓名2 |乙 | 26-08-2020 | 我的第一个意图是创建一个基于 ReceiveDate 和 EstimatedDuration 计算到期日期的查询。之后我想知道下个月到期的所有产品,例如。 SQL代码是: WHERE 条件是因为在我的产品中 table 我没有在所有产品中使用 EstimatedDuration。 提前感谢您的帮助!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));
您可能需要扩展语法:
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;