数据表中有一个datetime类型的字段,我用“2006-7-23 14:09:38”的字符串向字段中插入多条数据(时间依次增长),现在我要从表中取出从2006-7-23 14:09:38到2006-7-23 14:09:38加上30秒之间的数据,我应该怎么取?

解决方案 »

  1.   

    select * from tablename
    where dt between '2006-7-23 14:09:38' and dateadd(s,30,'2006-7-23 14:09:38')
      

  2.   

    select dateadd(s,30,'2006-7-23 14:09:38')
      

  3.   

    select dateadd(s,30,'2006-07-04 17:03:20')
      

  4.   

    反正我查询是挺慢的,前提是我的数据量较大,我也不知道上面语句是不是效率低。
    是不是在'2006-7-23 14:09:38'前30秒可以写成dateadd(s,-30,'2006-7-23 14:09:38')
    还是新手,请大家多帮忙
      

  5.   

    还有就是我在这个基础上查询ID=123的SQL语句应该怎么写
      

  6.   

    是不是在'2006-7-23 14:09:38'前30秒可以写成dateadd(s,-30,'2006-7-23 14:09:38')是
      

  7.   

    在这个基础上查询ID=123的SQL语句应该怎么写
    ----------------------------------------------
    这个还不是很明白你意思select * from tablename
    where dt between '2006-7-23 14:09:38' and dateadd(s,30,'2006-7-23 14:09:38')
     and id=123??
    还是
    select ..... from (select * from tablename
    where dt between '2006-7-23 14:09:38' and dateadd(s,30,'2006-7-23 14:09:38'))t
    where t.id=123??
      

  8.   

    select * from aa
    where gpstime between dateadd(s,-30,'2006-7-23 14:10:38') and dateadd(s,30,'2006-7-23 14:10:38') and ID=123select * from (select * from aa
    where gpstime between dateadd(s,-30,'2006-7-23 14:10:38') and dateadd(s,30,'2006-7-23 14:10:38'))t
    where t.ID=123好像都一样啊,是不是第二种方法能好一点?
      

  9.   

    我用datediff(ms,@d,getdate())下执行时间,两个都差不多,但第二个能稍快点,我还是不明白哪条语句更好啊?能不能帮我分析分析
      

  10.   

    打开查询分析器,输入语句后,ctrl+k