比如说:窗体中有两个Edit,一个用来输入年,一个用来输入月。而数据库的表中有一个日期型的字段。
现在取数据库中的数据要满足这样的条件:数据库中的这个日期类型的字段的值,应该在你输入的年月内。
也就是说,假设数据库中的值是:2004/09/09, 而你输入的值分别是:2004 和 09,则这是符合条件的。
简单的说,就是数据库中的值的年月跟你输入的年月一样就行。请问这样的select条件怎么实现?(关键是两个数据的类型不一样)先谢谢了
现在取数据库中的数据要满足这样的条件:数据库中的这个日期类型的字段的值,应该在你输入的年月内。
也就是说,假设数据库中的值是:2004/09/09, 而你输入的值分别是:2004 和 09,则这是符合条件的。
简单的说,就是数据库中的值的年月跟你输入的年月一样就行。请问这样的select条件怎么实现?(关键是两个数据的类型不一样)先谢谢了
where CONVERT(Varchar(7), t, 120) = '2004-09'
smonth:=kcopy(fieldname('date'),6,2);//copy函数用来取得一个字符串的子串,fieldname('date')是你数据库中存日期的字段名。
需要先转换:DateToStr(fieldname);或者是fieldbyname('字段名').asstring;
//
begin
sql.Clear;
sql.Add('select * from test where CONVERT(char(7),dd, 111) ='''+edit1.text+'/'+edit2.text+'''');
open;
end;
调试通过
'select * from test where CONVERT(char(7),dd, 111) ='''+:sYear+'/'+:sMonth+''''Parameters.ParamByName('sYear').Value := Edt_Year.Text ;
Parameters.ParamByName('sMonth').Value := Edt_Month.Text ;这样的话,会提示sql语句后面的有错误。请问怎么修改。
select datepart(YY,getdate()), datepart(MM,getdate())
Parameters.ParamByName('sYear').Value := edit1.Text+'/'+edit2.Text;
var
Year, Month,day: Word; DecodeDate(now, Year, Month, Day);//把日期分解开
然后再select