请指教:用adoquery 如何统计出日期 date1 和date2之间 某字段所有数据的和啊?多谢多谢~~

解决方案 »

  1.   

    select sum(某字段) from table where 日期 between Data1 and Data2
      

  2.   

    统计2005-5-8到2005-5-9是对的  可统计 2005-5-8到2005-5-12就不对了.是怎么回事啊?代码如下:with adoquery1 do
       begin
         sql.Clear;
         sql.add('select sum(a1),sum(a2),sum(a3)');
         sql.add('from fs');
         sql.add('where date between :date1 and :date2');
         parameters.parambyname('date1').Value:=datetostr(datetimepicker4.date);
         Parameters.parambyname('date2').value:=datetostr(datetimepicker5.date);
        adoquery1.Prepared;
        adoquery1.open;
    谢谢~~~
      

  3.   

    检查一下你的Date,是否是带有时间的。
    数据库中如果是2005-05-08 08:00 到2005-05-12 :06:00 的话
    用Sql进行查询2005-05-08到2005-05-12,会将时间转化为2005-05-08 00:00 到2005-05-12 00:00,
    自然就不会包含2005-05-12这天的数据。不知是不是这个问题。
      

  4.   

    不是的,我的格式都是2005-05-08格式的.
    好像从08-09 ,10-12计算sum(a1),sum(a2),都是对的.可只要跨越了10号就有问题~~可能还是between的条件有问题.请大哥们指点啊~~~
      

  5.   

    a1
    2005-05-08      3
    2005-05-09      2
    2005-05-10      3
    2005-05-11      1
    2005-05-12      1               sum(a1)
      8-9           5
      8-10          8
      8-11          5
      8-12          4
      9-10          10
      9-11          7
      9-12          6
      10-12         5
      

  6.   

    应该是你计算机系统日期格式设置的问题,提供两种方法供参考:
    1.把你的计算机系统的日期格式设置为yyyy-mm-dd的格式,应该就可以了。但这样的话要求运行你程序的所有机子都要这么设置,程序的移植性能不好,所以建议使用第二种方法。2.把   parameters.parambyname('date1').Value:=datetostr(datetimepicker4.date);
           Parameters.parambyname('date2').value:=datetostr(datetimepicker5.date);
      改为:
         parameters.paramvalues['date1']:=datetimepicker4.date;
         Parameters.paramvalues['date2']:=datetimepicker5.date;
      

  7.   

    between好像不太管用还是用:where dt1<=date1 and dt1>=date2吧,