1.数据如下
name    type         date
A       县令    2008-12-16 17:23:06.500
B       县令    2008-12-16 17:33:06.500
C       县令    2008-12-16 17:43:06.500
D       县令    2008-12-16 17:53:06.500
E       县令    2008-12-16 18:13:06.500
F       县令    2008-12-16 17:23:06.500
G       县令    2008-12-16 17:33:06.500
I       县令    2008-12-16 17:43:06.500
我使用select top 1 * from tb order by newid()随机抽取上面数据中的一条,
假如A这条数据在3分钟内已经随机抽取过一次,那我就希望它在3分钟只内再出现一次了?2.还有个问题有2个时间 data1=2008-12-16 17:23:06.500,date2=2008-12-16 17:33:06.500
我要的结果:data2-data1=10(备注10s)
这个SQL语句怎么写了?

解决方案 »

  1.   

    2.还有个问题有2个时间 data1=2008-12-16 17:23:06.500,date2=2008-12-16 17:33:06.500 
    我要的结果:data2-data1=10(备注10s) 
    这个SQL语句怎么写了? ----------
    select datediff(ss, '2008-12-16 17:23:06.500', '2008-12-16 17:33:06.500')
      

  2.   

    本帖最后由 libin_ftsafe 于 2008-12-16 17:55:04 编辑
      

  3.   

    select [分钟]=datediff(mi, '2008-12-16 17:23:06.500', '2008-12-16 17:33:06.500')
    ,[秒钟]=datediff(ss, '2008-12-16 17:23:06.500', '2008-12-16 17:33:06.500')/*
    分钟          秒钟
    ----------- -----------
    10          600(1 行受影响)
    */
      

  4.   

    --2,
    declare @data1 datetime,@data2 datetime
    set @data1='2008-12-16 17:23:06.500'
    set @data2='2008-12-16 17:33:06.500'select datediff(ss,@data1,@data2) as seconds
    /*
    seconds     
    ----------- 
    600
    */
      

  5.   

    每次抽取记录的时候,都把新抽取的记录的name和抽取时间保存在一张中间表里,而每次抽取记录的时候,都根据中间表的name字段以及抽取时间过滤掉三分钟之内被抽取过的记录。
      

  6.   

    我使用select top 1 * from tb order by newid()随机抽取上面数据中的一条, 
    假如A这条数据在3分钟内已经随机抽取过一次,那我就希望它在3分钟只内再出现一次了? 可以将抽取过的记录存到一个表中,记录Name及抽取时间,再次抽取时过虑掉3分钟内抽取过的记录。
      

  7.   

    select datediff(ss,'2008-12-16 17:23:06.500','date2=2008-12-16 17:33:06.500')
      

  8.   

    select datediff(ss,'2008-12-16 17:23:06.500','date2=2008-12-16 17:33:06.500')
      

  9.   

    第二个楼上给的方法都可以的。
    至于第一个,个人想法是最好再加个时间字段,或者用libin_ftsafe所说的。
    仅参考