比如,表名:住院信息
列名:  姓名(char)      住院时间(char)或(datetime)
      aaaa          2008-1-1
      bbbb          2008-2-2
      cccc          2008-3-3
      dddd          2008-4-4

怎样从中选出2月到4月的数据啊
我用的语句
AnsiString sql;
zQuery->SQL->Clear();
sql="select * from 住院信息 where 住院时间 between CONVERT(datetime , '";
sql+=Edit2->Text+"') and CONVERT(datetime , '" ;
sql+=Edit3->Text+"')";
zQuery->SQL->Add(sql);
zQuery->ExecSQL();
Table1->Active = true;  Edit2,3是可选的,可是选不出来,很郁闷

不是时间选不出来
是数据不能按照选定的时间段选出来

还请高人指点阿

在ExecSQL执行前增加一条把SQL写入文件的代码,
zQuery->SQL->SaveToFile("c:\\TestSQL.sql");

运行程序后打开保存的SQL文件,在查询分析器里面看看SQL有没有什么问题。

如果是DATETIME
select * from XX  where year(dt)=2008 and month(dt) between 2 and  4

如果是CHAR,如果是固定格式的如  2008-06-01
你可以用 select * from XX  where Substring(dt,1,4)='2008' and cast((Substring(dt,6,2) as int) between 2 and  4

非固定格式呵呵,要写过程了.先把日期解析出来,再把结果放到临时表中.

或者程序里面…控制,
把日期用字符,解析后得到年,月,然后把最后结果显示出来(SringGrid吧)

我也遇到过,按照时间来查询,会出错,说在将nvarchar类型转换成int类型是出错,不知道是怎么回事