DateAdd 和日期字段不能用作查询的条件
Posted
技术标签:
【中文标题】DateAdd 和日期字段不能用作查询的条件【英文标题】:DateAdd and date fields not working as a criteria for a query 【发布时间】:2016-03-11 18:04:39 【问题描述】:我正在处理的查询以前有效。我不知道确切的日期,因为我在同事离开时继承了它。每次运行查询时,我都会收到“条件表达式中的数据类型不匹配”。
SELECT Personnel.Badge, Personnel.First_Name, Personnel.Last_Name, Training.Course, DateAdd("m",[Cert_Duration],[Latest_Course_Date]) AS Cert_Expiration, Personnel.Reports_To
FROM Training INNER JOIN (Personnel INNER JOIN qry_Training_Log_Latest_Course ON Personnel.Badge = qry_Training_Log_Latest_Course.Personnel) ON Training.Training_ID = qry_Training_Log_Latest_Course.Course
WHERE (((DateAdd("m",[Cert_Duration],[Latest_Course_Date]))<DateAdd("m",6,Date())) AND ((Training.Cert_Duration) Is Not Null));
出现了这条线
如有任何反馈,我将不胜感激。
【问题讨论】:
1) 你确定是DateAdd
函数和日期字段吗? 2)该字段的任何数据类型最近是否发生了变化?
这有什么改变吗? SELECT Personnel.Badge, Personnel.First_Name, Personnel.Last_Name, Training.Course, DateAdd("m",[Cert_Duration],[Latest_Course_Date]) AS Cert_Expiration, Personnel.Reports_To FROM ((Training INNER JOIN Personnel ON Training.Training_ID = qry_Training_Log_Latest_Course.Course) INNER JOIN qry_Training_Log_Latest_Course ON Personnel.Badge = qry_Training_Log_Latest_Course.Personnel) WHERE (((DateAdd("m",[Cert_Duration],[Latest_Course_Date]))<DateAdd("m",6,Date())) AND ((Training.Cert_Duration) Is Not Null));
当我尝试使用你的代码时,它给出了一个连接语法错误。
【参考方案1】:
此查询还触发“条件表达式中的数据类型不匹配。”
SELECT DateAdd("m", Null, Date());
因此,您的错误可能是由此表达式中的 Null [Cert_Duration]
值引起的...
DateAdd("m",[Cert_Duration],[Latest_Course_Date])
您需要将查询修改为...
-
在评估
DateAdd()
之前排除具有 Null [Cert_Duration]
值的行。
或者用其他东西代替该表达式中的 Null [Cert_Duration]
值。
【讨论】:
HansUP,您为我指明了正确的方向。幸运的是,被引用的类别只有 6 个条目,因此我能够按 Training.Training_ID 进行过滤。一旦我这样做了,查询就完美无缺。以上是关于DateAdd 和日期字段不能用作查询的条件的主要内容,如果未能解决你的问题,请参考以下文章