sqlserver2000中的查询,查询@h小时前的平局值
declare @h  integer
set @h=-1
select avg(tag1)as avgtag1,avg(tag2)as avgtag2
from table1
where datetime between dateadd(hour,@h,getdate()) and getdate()
我用一个spinedit,在spinedit中输入查询的时间条件:
h:=strtoint(spinedit1.text);
可是我不知道query1.sql中该怎么写,请大家指点
query1.sql.add('select avg(tag1)as avgtag1,avg(tag2)as avgtag2
from table1 ');
query1.sql.add('....')

解决方案 »

  1.   

    1,先求出h小时前的时间 t1。
    Unit
    DateUtils;var t1,t2:Tdatetime;
    h: integer;//几个小时前;
    t2:=date;  //当前时间;
    h:=strtoint(speinedit1.text)
    t1:=IncHour(t2,h);  //h小时前的时间
    2.查处记录:
    query1.close;
    query1.sql.clear;
    query1.sql.add(''select avg(tag1)as avgtag1,avg(tag2)as avgtag2'+
    ' from table1'+
    ' where datetime between'''+datetostr(t1)+''''+
    ' and '''+datetostr(t2)+'''');
    query1.open;
      

  2.   

    对了,t1:=IncHour(t2,h);中,h可以为正(某时间之后),也可以为负数(某时间之前)