数据库 为  SQL SERVER 2000
假设数据表 table1,有记录
编号    售币数            时间
1        1       2005-5-4 12:00:01
2        2       2005-5-4 12:00:04
3        2       2004-4-3 12:01:00
4        1       2004-3-5 12:01:00
5        1       2004-3-5 12:01:00
当我从外面传两个参数(一个参数为年份vx1,一个参数为月 vx2)
假设如:vx1=2005       vx2=5现在我要求出 2005 年   5  月份的 售币总数前台程序语言 为 DELPHI  
各位大哥,我应该怎样设计这个程序啊?谢谢!

解决方案 »

  1.   

    Procedure DoSomething;
    var
      DT: string;
    begin
      DT := IntToStr(vx1)+'-'+InttoStr(vx2);
     
      with AdoQuery1 do
        begin
          close;
          sql.clear;
          sql.text := 'select Sum(售币数) from Table1 where 时间 like '''+DT+'%'' ';
          sql.open;
        end;
    end;
      

  2.   

    用adoquery写sql语句来查询,就很容易得到。
    假设给两个输入框edit1,edit2分别输入年份和月份。程序就可以这样写adoquery.close;
    adoquery.sql.clear;
    adoquery.sql.add('select sum(售币数) as 售币数 where substring(Trim(时间),1,4)='''+Trim(edit1.text)+''' and substring(Trim(时间),6,2)='''+Trim(edit1.text)+'''  ');
    adoquery.open;但是,既然要用时间来查询,时间的格式就要规范,像以上代码,是间隔时必须满足10位
    即,如果是2005-5-2 就必须规范为2005-05-02
      

  3.   

    如果想要按月统计, 我想应该把 时间 字段分解一下吧, 
    Table1(编号,货币数,年,月,日,时分秒)这样就可以直接分组统计了Procedure DoSomething;
    var
      DT: string;
    begin
      DT := IntToStr(vx1)+'-'+InttoStr(vx2);
     
      with AdoQuery1 do
        begin
          close;
          sql.clear;
          sql.text := 'select 年,月,Sum(售币数) from Table1 Group by 年,月';
          sql.open;
        end;
    end;
      

  4.   


    谢谢 hatum 大哥和 lovend 大哥create procedure  myproc3
    @aa     varchar(50),
    @bb     varchar(50)
    as
        declare  @cc   varchar (100)
        set      @cc=@aa+'-'+@bb    select *
        from  table3
        where timess=@cc+'%'
    go然后我执行 exec  myproc3 '2005','5'提示的错误是:
    从字符串转换为 datetime 时发生语法错误
    我应该怎样修呢?谢谢!
      

  5.   

    你数据库中用的是datatime, 你的那个@cc+'%'是不明确的字符串, 我想就是这里的问题了不知道这种怎么搞 -_-#不过还是有2种办法
    1), 拆分时间字段
    2), 把你的时间字段改成字符串类型
      

  6.   

    hatum 大哥:
                  您好!
       在 SQL SERVER 2000  里 怎么坼分时间段 和 把时间字段改成字符串类型 啊谢谢!
      

  7.   

    hatum  大哥:
                   您好!
    假设
    aa  datetime    '200-5-5 17:00:00'
    怎么用 convert 和 cast  把 aa 变为字符串类型的 '2005-5-5' 
    或者字符串类型的 '200-5-5 17:00:00'  呢?(在 SQL SERVER 2000 里)谢谢!
      

  8.   

    select  convert(char(10),getdate(),121)
    可一这样写
    select convert(char(10),时间,121) 时间,sum(售币数) 售币数 from table1 group by 
      convert(char(10),时间,121)