declare @tab table(a int,b int,c datetime)
insert @tab values(1,200,'2005-8-17 15:25:08')
insert @tab values(2,500,'2005-8-16 10:26:43')
insert @tab values(3,600,'2005-8-19 3:26:38')
insert @tab values(4,350,'2005-8-19 10:26:30')
select * from @tabselect sum(b) from @tab where c<'2005-8-19 3:26:38'select sum(b) from @tab where c<'2005-8-19 10:26:30'--楼主,你的思路没错啊,是不是参数错了??

解决方案 »

  1.   

    逻辑上没问题,楼主的SQL语句是怎么写的?select sum(b) from 表 where c < (select c from 表 where a = 3)select sum(b) from 表 where datediff(ss,c,(select c from 表 where a = 3))>0
      

  2.   

    你的sql语句是对的。你传递的参数是什么类型的?
      

  3.   

    --楼主是要这个吧?
    select a,(select sum(b) from 表 where c<a.c),c
    from 表 c
    where c='2005-1-1'  --选出记录的条件
      

  4.   

    select a,
       b=(select sum(b) from 表 where c<a.c),  --b 为比选出记录c字段小的记录的sum(b)
       c
    from 表 c
    where c='2005-1-1'  --选出记录的条件
      

  5.   

    楼上的 zengzhengliang(啊牛) 说得对,老大在,我学习。哈哈:)
      

  6.   

    declare @d datetime
    set @d='2005-8-19 3:26:38'
    select sum(b) from t where convert(varchar,c)<@d and 
    convert(varchar,c,108)>convert(varchar,@d,108)
      

  7.   

    谢谢各位老大,问题找到了,我的表中的时间是通过SQL Server的getdate()函数插入的,后来在查询分析器中调试我的查询的时候我发现,sql server中存储的时间是包含毫秒的,比如时间是这样的:
    2005-08-17 15:25:08.000
    2005-08-19 10:26:29.670
    2005-08-19 12:53:01.293
    而我们的程序从数据库中取出来的时间是不包含毫秒信息的,这就造成了时间上查询的错误。
    现在我用where datediff(millisecond, c, @enddate) > 1000,也就是把时间同数据库中的时间做比较,取时间差1秒以上的为准,从而解决问题。