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

解决方案 »

  1.   

    格式...
    不要用datetostr
    要用formatdatetime,转成你数据库要求的格式
    如formatdatetime('yyyy-mm-dd',datetimepicker1.Datetime);
      

  2.   

    试了下,还是不行
    用的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格式的话,还是搜不到结果。
      

  3.   

    你sql中的date数据要加引号的
    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))+'');