sql问题

kinglang 2002-05-30 06:45:23
数据库:paradox7,内有一字段:时间,date类型
下列代码运行显示查询数据类型不匹配。请问如何更改?
(因为方便打字,没有区分大小写,见谅)
ansistring mysql="";
ansistring c=combobox1->text;
tdate curday=strtodate(c.substring(1,4)+"-"+c.substring(5,2)+"-"+c.substring(7,2));
mysql="secect * from temp.db where 时间="+curday+";
query1->close();
query1->sql->clear();
query1->sql->add(mysql);
query1->open();
...全文
51 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
kinglang 2002-05-31
  • 打赏
  • 举报
回复
用参数行了,另外那种还没试。
先不结贴,等我试完了再结。
li_aiwu 2002-05-31
  • 打赏
  • 举报
回复
按照上面做法,把日期型字段当成字符串就行了!
无任何痛苦!!!
li_aiwu 2002-05-31
  • 打赏
  • 举报
回复
我说错了!
你转换成这种格式就可以了:
"mm/dd/yyyy"
可以这样定义:
AnsiString stDate1;
stDate1=FormatDateTime("mm'/'dd'/'yyyy",DateTimePicker1->DateTime);

我试过了!没问题的!!
如不行联系我:
icq:158240123
li_aiwu@sina.com
yufei_yf 2002-05-31
  • 打赏
  • 举报
回复
在你的代码前面加上这两行
DateSeparator = '-';
ShortDateFormat = "yyyy-mm-dd";
kinglang 2002-05-31
  • 打赏
  • 举报
回复
这倒是个好办法,怎么我一直没想到呢。试试!!!
通过了立刻给你加分。
yanyuwuhen 2002-05-31
  • 打赏
  • 举报
回复
上边的写乱了,这是我做时用到的,你改一下吧
DataModuleTraffic->QuerySysLog->Close();
DataModuleTraffic->QuerySysLog->SQL->Clear();
DataModuleTraffic->QuerySysLog->SQL->Add("select * from \"Logdb\\SysLog.db\"");
DataModuleTraffic->QuerySysLog->SQL->Add("Where 操作日期=:mSysTimeToday");
DataModuleTraffic->QuerySysLog->ParamByName("mSysTimeToday")->AsDate=Date();
DataModuleTraffic->QuerySysLog->Prepare();
DataModuleTraffic->QuerySysLog->Open();
yanyuwuhen 2002-05-31
  • 打赏
  • 举报
回复
用参数将时间带入吧,我以前直接写成字符串格式也没能实现
DataModuleTraffic->QuerySysLog->Close();
DataModuleTraffic->QuerySysLog->SQL->Clear();
DataModuleTraffic->QuerySysLog->SQL->Add("select * from \"Logdb\\SysLog.db\"");
DataModuleTraffic->QuerySysLog->SQL->Add("Where 操作日期=:mSysTimeToday");
DataModuleTraffic->QuerySysLog->ParamByName("mSysTimeToday")->AsDate=Date();
DataModuleTraffic->QuerySysLog->Close();
DataModuleTraffic->QuerySysLog->SQL->Clear();
DataModuleTraffic->QuerySysLog->SQL->Add("select * from \"Logdb\\SysLog.db\"");
DataModuleTraffic->QuerySysLog->SQL->Add("Where 操作日期=:mSysTimeToday");
DataModuleTraffic->QuerySysLog->ParamByName("mSysTimeToday")->AsDate=Date();
kinglang 2002-05-31
  • 打赏
  • 举报
回复
我存进表中的时候是在shordateformat="yyyymmdd";存的。

我把字符串化成"1998-12-24"

我试了一下好像不行。
zqone 2002-05-30
  • 打赏
  • 举报
回复
在sql中应该用字符串类型
li_aiwu 2002-05-30
  • 打赏
  • 举报
回复
如果不行转换成:
'2-22-2002' 试试!!
kinglang 2002-05-30
  • 打赏
  • 举报
回复
就这样简单吗?
谢谢了,我试试
bcb_alone 2002-05-30
  • 打赏
  • 举报
回复
AnsiString str;
str=c.substring(1,4)+"-"+c.substring(5,2)+"-"+c.substring;
mysql="secect * from temp.db where 时间='"+str+"'";
在SQL中的时间要加上'2002-2-22,根本不用转成时间类型直接用ansistring

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧