Delphi 的SQL查询数据类型不匹配错误
编号:QA000253
建立日期: 1998年12月24日 最后修改日期:2001年1月10日
所属类别:
吴宾:
近日使用DELPHI 3.0中的SQL设计一个查询:"SELECT * FROM BASIC.DBF WHERE DATE=1998-10-20"(DATE为一日期型字段),在运行时提示:类型不匹配。请指教:如何改正?
回答:
你的这个查询正确的语法应该是:SELECT * FROM BASIC.DBF WHERE DATE="10/20/1998"。这里日期必须要用引号括起来,日期格式必须是"MM/DD/YY"或"MM/DD/YYYY",与当前系统的日期格式无关,而时间格式必须为"hh:ss AM/PM"。 如果你使用两位来表示年份,而BDE的FOURDIGITYEAR又设为False,Delphi认为年数小于等于49的为21世纪的日期,而年数大于等于50的为20世纪。经常同日期/时间一起使用的SQL函数还有EXTRACT,比如你想找DATE为5月的记录,可以使用SELECT * FROM People WHERE (EXTRACT(MONTH FROM DATE) = 5)来查询。我们这里介绍的有关操作主要是针对Delphi 3.0本地查询时的SQL语法,不同的系统的SQL语句在日期/时间方面是不同的。如果想知道更多的有关Delphi 3.0本地查询时的SQL语法,可以阅读Delphi 3.0的帮助文件Local SQL Guide。
雨农的意见:
你可以在使用查询的当前窗体中定义以下语句可以解决在查询时碰到的类型不匹配的问题。
如下:
ShortDataFormat:= 'yyyy/mm/dd'
Dataseparator:='-';
此问题由李海回答。
| |
|
|
| |
|
|