如题。我要在晚上7:00到9:00随机生成一个时间怎么做比较简单??谢谢~~!

解决方案 »

  1.   

    又是把什么都扔给SQL的^^;建个个临时表,里面放1~60,然后用order by newid()随机取数字出来拼成时间
      

  2.   

    方法1DECLARE @s VARCHAR(2)
    SELECT @s=LEFT(NEWID(),2)
    DECLARE @c TABLE (id int,c char(1))
    INSERT @c
    SELECT 7,'A'
    UNION SELECT 2,'B'
    UNION SELECT 3,'C'
    UNION SELECT 4,'D'
    UNION SELECT 5,'E'
    UNION SELECT 6,'F'
    UNION SELECT 1,1
    UNION SELECT 2,2
    UNION SELECT 3,3
    UNION SELECT 4,4
    UNION SELECT 5,5
    UNION SELECT 6,6
    UNION SELECT 7,7
    UNION SELECT 0,0
    UNION SELECT 1,8
    UNION SELECT 2,9
    --ID字段最大值为7的原因是,8*16=128分钟超出二小时了。
    SELECT CONVERT(VARCHAR(10),DATEADD(mi,a.id*16+b.id,'2005-6-1 19:00:00'),8) FROM @c a
    INNER JOIN @c b ON a.c=LEFT(@s,1) and b.c=RIGHT(@s,1)方法2
    SELECT TOP 120 IDENTITY(int) ID INTO #t FROM sysobjects,syscolumns
    SELECT TOP 1 CONVERT(VARCHAR(10),DATEADD(mi,ID,'2000-1-1 19:00:00'),8) FROM #t ORDER BY NEWID()
    DROP TABLE #t各有优缺点,这里就不说了。
      

  3.   

    select str(7+abs(checksum(newid())%2),1)+':'+replace(str(abs(checksum(newid())%60),2),' ','0')
      

  4.   

    谁能给小弟通俗的说一下checksum的用法...看SQL的连机帮助都不太明白...没用过这个函数..汗一下自己...
      

  5.   

    这里只是把一个随机获得的NewID()变成一个整数而已,已经背离本来的用法,了解一下就可以了