delphi中使用数据库查询时的问题
各位大侠,俺是菜鸟,有遇到很多问题无法解决,求各位大侠高抬贵手,就是我做的一个查询窗体:
在查询日期时出了问题,部分代码如下:
if edt3.Text<>' / / ' then
begin
s:=FormatDateTime('yyyy-MM-dd',edt3.Date);
// s:=DateToStr(FormatDateTime('yyyy-MM-dd',edt3.Date));
sqlyuju:=sqlyuju+'Pin_date>='+s+' and ';
end;
if edt4.Text<>' / / ' then
begin
// s:=DateToStr(FormatDateTime('yyyy-MM-dd',edt4.Date));
sqlyuju:=sqlyuju+'Pin_date<='+FormatDateTime('yyyy-MM-dd',edt4.Date)+' and ';
end;
但是在数据库中Pin_date的数据类型是Char(32);在执行时总是提示我‘再将varchar值2012-07-14 转换成int时失败’;
各位有什么好的方法帮我解决一下这个问题吗?先多谢了~~,先说明一下,我的edt3和edt4是第三方控件,他的日期格式是
yyyy/MM/dd的格式,而数据库的日期格式是yyyy-MM-dd的字符型数据,所以我想用FormatDateTime('yyyy-MM-dd',edt3.Date)
进行一下格式转换在进行笔较,各位对于这个问题有什么好的方法吗,教小弟一下,再次感谢~~
[解决办法]
比如,edt4.Date是2012/7/16, 那么你这里sql语句是 ... Pin_date<=2012/7/16 ...
比较日期、字符要加上单引号,否则它会视为数字
所以MSSQL想把2012/7/16转换成数字的时候,转换不成功就会这样的错误了
改成,其它类似
sqlyuju:=sqlyuju+'Pin_date<='+quotedstr(FormatDateTime('yyyy-MM-dd',edt4.Date))+' and ';
[解决办法]
sqlyuju:=sqlyuju+'Pin_date<='+FormatDateTime('yyyy-MM-dd',edt4.Date)+' and ';
这个sqlyuju是sql语句?????
sql中根本就没FormatDateTime这个函数,这个函数是delphi的,不出错才怪呢,应该用convert(varchar(8),Edt4.date,112)