我正在使用Access 2010,并有一个表,如下所示,称为Table1
(表是从Excel导入的,日期列格式为date
那里):
date xy
---------------------------------
19.10.2016 14:10:51 jljh
19.10.2016 13:13:28 kgkhg
19.10.2016 12:53:15 asd
我已经接受了,我不能做正常的SQL的东西在访问。但是为什么下面这个简单的查询以错误data type mismatch in criteria expression
结束呢?
SELECT DateValue(DATE) as dt, COUNT(CSID)
FROM Table1
GROUP BY DateValue(DATE)
首先,您可以在Access中执行"正常的SQL操作"。
那么,DateValue不接受dot作为日期分隔符,因此:
SELECT DateValue(Replace([DATE], ".", "/")) as dt, COUNT(*)
FROM Table1
GROUP BY DateValue(Replace([DATE], ".", "/"))
你——也就是我——说这个表是从Excel导入的。所以回到Excel,在那里做日期截断,重新导入它,你的——那是我的——查询会像"正常"SQL一样运行。没有比这更直观的了。
EDIT:同时我也弄清楚了问题是什么:日期列中有未填充的值。因此,DateValue
不知道如何处理它们,必须抛出异常。然而,仍然有点恼人的是,如果没有group by
语句,这个错误就不会发生。所以这次只有50%是Access的错,另外一部分是我的错:-)