- with adoquery1 do begin
- close;
- sql.text :=format('insert into( fid,fDate) values(%s,''%s'') ',
- ['1',datetimetostr(now())]);
- execsql;
- end;
以上代码看上去没有什么问题。但是,有实际应该用。。
经常在电脑上出现 从字符串转换为 datetime 时发生语法错误 这个操作提示。
为什么呢???
其实就是时间格式的问题。以简体中文系统为例, 假如你的时间是 2008年12月31下午2点: 格式设置为: h:mm:ss ,
系统就会显示为: 下午 2:00:00 。
那你用 datetimetostr(now()) 得到的结果就是: 2008-12-31 下午 2:00:00
这样的结果,结束,提交给 MSSQL 服务器上时,就会出错标题所提到的错误了。
其中之一解决方法:
- with adoquery1 do begin
- close;
- sql.text :=format('insert into( fid,fDate) values(%s,''%s'') ',
- ['1',formatDatetime('yyyy-MM-dd HH:mm:ss',now()]);
- execsql;
- end;
也就是格式化一下日期时间格式,即可以正常的了。