sql - 即使我使用 # 分隔符,为什么在 Microsoft Access 中比较日期时仍会出现数据类型不匹配?
问题描述
我有一张参加过课程的人的姓名表以及他们参加该课程的时间戳。这存储在Access中。我正在尝试获取在给定日期上课的人的姓名。我写的代码如下:
SELECT [Person Name], DateValue([Activity Start Date]) FROM [2019 Learning]
WHERE DateValue([Activity Start Date]) = #11/14/2019#
即使我要查找的日期包含在表中,当我运行查询时它会工作一秒钟,然后我收到一条错误消息说
“标准表达式中的数据类型不匹配。”
然后它将所有返回的数据更改为“ #Name?
”。有人可以帮助解释为什么我会收到此错误吗?
解决方案
与其用值代替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
,从而排除记录。
推荐阅读
- powerbi - 每日医院普查:汇总为每个日期过滤的表格
- javascript - 如何更改 KeyboardDatePicker 材料 ui 的语言?
- java - 我无法弄清楚 getTotalFlightTime()
- c++ - 使用 FFMPEG 读取每帧时间码?
- r - R 挂在 names(dt) <- c(a,b,c) 赋值上,但只在函数内部...?
- reactjs - 我如何在反应中制作这样的组件?
- r - 如何从R中的嵌套列表中提取元素
- c++ - 是 boost dynamic_bitset 仅标头
- javascript - 如何对数组进行排序取决于Javascript中的相同值
- python - Move files with same string part on name to directory