我程序一个周期运行时间为50秒-65秒不等,每个运行周期把采集到的值写入数据库。现在我要做个查询语句查出每个整点时的值、每8小时值(以交班时间为止)、每天的值(以交班时间为止)。这个怎么做??
因为记录时间不等,所以可能在某个整点上无记录,所以要取上一条或下一条记录。这个功能怎么实现??我的程序是用delphi 写的!!select 语句能不能实现这个功能??

解决方案 »

  1.   


    以下是我写的一个取整点记录的表,其他如交班时间等,@M数改成当天的第几个整点时交班数,如8等,就可取到
    --取值的日期
    declare @date smalldatetime
    --在这里是整点时间
    declare @hours smalldatetime
    declare @m smallint
    declare @seconddiff int
    set @m=1
    set @date='2006-10-26'
    while @m<=24
    beginset @hours=DATEADD(hour,@m ,@date ) 
    select @seconddiff=min(abs(datediff(second,日期字段,@hours))) from 表select top 1 * From 表 where  (abs(datediff(second,日期字段,@hours))) =@seconddiff
    order by  (datediff(second,日期字段,@hours))
    set @m=@m+1
    end
      

  2.   

    可能要和用户重新协定一下“时间点”的概念吧,就是说,时间点不是一个特定的时间值,而是一个时间范围,如19:00这个时间点,其实是指18:59:30--19:00:30这个时间范围。在这个时间范围内的记录,就代表19:00这个“时间点”的记录。如果是个时间范围,那SQL编码就容易了。