想用sql语言直接查询在某一时间段内记录的数据(已记录数据更新时间),
但在与DateTimePicker做时间比较的时候,结果明显不对。如两个DateTimePicker 中的date 值分别为2011/ 8/11,2011/12/11,数据库中对应时间字段(datetime)内也有数据,但就是查找不出来。代码如下:
ADOQout2.SQL.Add('AND 报废或领用时间 >= '+datetostr(datetimepicker1.Datetime)+' and 报废或领用时间 <= '+datetostr(datetimepicker2.Datetime)+'');如果把datetostr改成datetimetostr执行时又会报错!小弟菜鸟一个,求大家帮忙!
不要用datetostr
要用formatdatetime,转成你数据库要求的格式
如formatdatetime('yyyy-mm-dd',datetimepicker1.Datetime);
用的mysql,数据记录的格式是2011-09-29 00:00:00
把格式转成:'yyyy-mm-dd hh:mm:ss'代码:ADOQout2.SQL.Add('AND 报废或领用时间 >= '+formatdatetime('yyyy-mm-dd hh:mm:ss',datetimepicker1.Datetime)+' and 报废或领用时间 <= '+formatdatetime('yyyy-mm-dd hh:mm:ss',datetimepicker2.Datetime)+'');可执行的时候还是报错:
‘17NULL and 报废或领用时间 <= 2011-12-16 17NULL’
直接用yyyy-mm-dd格式的话,还是搜不到结果。
ADOQout2.SQL.Add('AND 报废或领用时间 >= '''+formatdatetime('yyyy-mm-dd hh:mm:ss',datetimepicker1.Datetime)+''' and 报废或领用时间 <= '''+formatdatetime('yyyy-mm-dd hh:mm:ss',datetimepicker2.Datetime)+'''');
或用
ADOQout2.SQL.Add('AND 报废或领用时间 >= '+QuotedStr(formatdatetime('yyyy-mm-dd hh:mm:ss',datetimepicker1.Datetime))+' and 报废或领用时间 <= '+QuotedStr(formatdatetime('yyyy-mm-dd hh:mm:ss',datetimepicker2.Datetime))+'');