时间查询, 在线等,急啊
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('....')
问题点数:0、回复次数:5Top
1 楼cyai(阿龙)回复于 2004-07-04 11:52:56 得分 0
没必要写这么多。
SQL.Text := Format(
'select avg(tag1)as avgtag1,avg(tag2)as avgtag2 '+
'from table1 '+
'where datetime between dateadd(hour,%s,getdate()) and getdate()',
[spinedit1.text]);Top
2 楼rmh(星辰)回复于 2004-07-04 12:09:16 得分 0
不行啊,运行时提示在between附近有语法错误Top
3 楼metro()回复于 2004-07-04 13:50:17 得分 0
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;
Top
4 楼metro()回复于 2004-07-04 14:17:35 得分 0
对了,t1:=IncHour(t2,h); 中,h可以为正(之后),也可以为负数(之前)Top
5 楼cyai(阿龙)回复于 2004-07-04 21:33:31 得分 0
或许datetime是SQL的关键字,你加上中括号给它[datetime].
SQL.Text := Format(
'select avg(tag1)as avgtag1,avg(tag2)as avgtag2 '+
'from table1 '+
'where [datetime] between dateadd(hour,%s,getdate()) and getdate()',
[spinedit1.text]);Top




