首页 > 解决方案 > 即使我使用 # 分隔符,为什么在 Microsoft Access 中比较日期时仍会出现数据类型不匹配?

问题描述

我有一张参加过课程的人的姓名表以及他们参加该课程的时间戳。这存储在Access中。我正在尝试获取在给定日期上课的人的姓名。我写的代码如下:

SELECT [Person Name], DateValue([Activity Start Date]) FROM [2019 Learning]
WHERE DateValue([Activity Start Date]) = #11/14/2019#

即使我要查找的日期包含在表中,当我运行查询时它会工作一秒钟,然后我收到一条错误消息说

“标准表达式中的数据类型不匹配。”

然后它将所有返回的数据更改为“ #Name?”。有人可以帮助解释为什么我会收到此错误吗?

标签: sqlms-accessms-office

解决方案


与其用值代替Null(如果查询输出了这样的值,这可能会导致不希望的/令人困惑的结果),另一种解决方法可能是在子句datevalue中完全避免使用该函数。where

由于 MS Access 中的日期时间只是数值,其中数字的整数部分表示日期部分,小数部分表示一天中的小数部分,或时间部分,您可以使用以下方法获取 的所有记录#11/14/2019#

select [Person Name], datevalue([Activity Start Date])
from [2019 Learning]
where [Activity Start Date] >= #11/14/2019# and [Activity Start Date] < #11/15/2019#

在这里,Null值被自动排除,因为两个比较运算符都会Null在提供时返回Null,从而排除记录。


推荐阅读