【问题标题】:Query that calculates a DateDiff returns a Data Type Mismatch in criteria计算 DateDiff 的查询返回条件中的数据类型不匹配
【发布时间】:2021-10-05 01:48:55
【问题描述】:

我正在尝试创建一个查询,以返回距到期日期不到一个月的产品。 在一个列中,我使用 DateAdd 来根据产品的接收日期知道到期日期是什么时候。然后在另一列中,我使用 DateDiff 来计算到期日期之前的天数,以便我可以应用

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

人员表: |人 |产品名称 |接收日期 | | ------ | ------------ | ------------ | |姓名1 |一个 | 2020 年 12 月 5 日 | |姓名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 条件是因为在我的产品表中我的所有产品都没有 EstimatedDuration。

提前感谢您的帮助!

【问题讨论】:

  • 样本数据和期望的结果会很有帮助。
  • 过期日期是什么数据类型?接收日期是什么数据类型?
  • 对不起!已经编辑了问题,所以它会更清楚

标签: sql ms-access


【解决方案1】:

您可能需要扩展语法:

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;

【讨论】:

  • 感谢您的帮助!我试图复制您的代码并进行更改,但它仍然给我同样的数据不匹配错误
  • 您的日期字段是什么数据类型?另外,请仔细检查您的数据。
  • 我将 DateDiff (Days) 字段定义为通用数字。其他都是日期(ExpirationDate 和 ReceiveDate)。我相信唯一的问题可能是 EstimatedDuration 中有一些空值,但我正在使用 WHERE 子句过滤这些信息
  • 好的。 Nz 可以解决这个问题。请查看编辑后的答案。
  • 它有效,但现在我收到了一些重复的信息。您知道为什么会发生这种情况吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多