你的SQL语句没有毛病,估计是因为参数xx1和xx2的类型不对
才出错,应为TDateTime.至于是不是2月,和其他月份有什么
不同吗?
程序如下
我是用C++Builder的,不过,注释得这么详细应该能读懂吧)
// 假设用户在Edit1,Edit2中分别输入年,月
// 年一定要为4位数 如: 2000年2月
AnsiString Mon_Left,Mon_Right;
Mon_Left = Edit1->Text+"-"+Edit2->Text+"-1"; //此时,Mon_Left="2000-2-1"
if(StrToInt(Edit2->Text)==12) //此时,Mon_Right="2000-3-1" ,考虑12月的问题
Mon_Right = IntToStr(StrToInt(Edit1->Text)+1)+"-1-1";
else
Mon_Right = Edit1->Text+"-"+IntToStr(StrToInt(Edit2->Text)+1)+"-1";
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("select * from table_1 where datefield1>=:xx1 and datefield1<:xx2");
Query1->ParamByName("xx1")->AsDateTime = Mon_Left;
Query1->ParamByName("xx2")->AsDateTime = Mon_Right;
Query1->Prepare();
Query1->ExecSQL();
Query1->Active = true;