【发布时间】:2015-02-04 15:45:32
【问题描述】:
我正在编写一个 sql 语句,我试图获取所有小于或等于开发日期的项目。但是,我收到一个错误
“标准表达式中的数据类型不匹配”
我找了又找,还是什么都没找到。
原始结果如下所示:
| Title | devTerm | pilotTerm |
+-------+---------+-----------+
| Ex1 | 201401 | 201404 |
| Ex2 | 201301 | 201401 |
| Ex3 | 201504 | 201601 |
这是我的查询:
SELECT *
FROM projects
WHERE Len(devTerm)>0
AND Len(pilotTerm)>0
AND Date() >= CDate(DateSerial(Left(devTerm,4),Right(devTerm,2),1))
我做错了什么?
附言如果没有必要,我不会使用 Access。
我参考这篇文章:Convert Text to date
截图:
【问题讨论】:
-
您的列是什么数据类型?如果 devTerm 和 PilotTerm 不是文本,则可能会引发错误。
-
它们都是“短文本”
-
@Ditto 如果不是文本,为什么会抛出错误?在我的即时窗口中,我测试了
MsgBox CDate(DateSerial(Left("201401", 4), Right("201401", 2), 1))和MsgBox CDate(DateSerial(Left(201401, 4), Right(201401, 2), 1))都有效。 -
@newd 不确定它是否会隐式转换它们。 Chase:为什么要使用 CDATE 将 DateSerial 的返回值转换为日期?已经是约会了?
-
@Ditto 是的,好点,我只是把它放在那里试一试,但在发布之前我忘了把它取下来。
标签: sql date ms-access ms-access-2013