C++Builder 程序员博客
5 Sep
比如,表名:住院信息
列名: 姓名(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类型是出错,不知道是怎么回事