怎么生成随机时间比较简单??
如题。我要在晚上7:00到9:00随机生成一个时间怎么做比较简单??谢谢~~! 问题点数:10、回复次数:9Top
1 楼fcuandy(了此残生.)回复于 2006-07-03 12:45:17 得分 0
这种问题干嘛老丢给SQL来做Top
2 楼LouisXIV(夜游神)回复于 2006-07-03 12:50:53 得分 2
又是把什么都扔给SQL的^^;
建个个临时表,里面放1~60,然后用order by newid()随机取数字出来拼成时间Top
3 楼fcuandy(了此残生.)回复于 2006-07-03 13:06:03 得分 3
方法1
DECLARE @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
各有优缺点,这里就不说了。Top
4 楼bugchen888(臭虫)回复于 2006-07-03 13:11:52 得分 5
select str(7+abs(checksum(newid())%2),1)+':'+replace(str(abs(checksum(newid())%60),2),' ','0')Top
5 楼fcuandy(了此残生.)回复于 2006-07-03 13:14:34 得分 0
楼上的方法强,学习中。Top
6 楼ldw701(★水若寒★)回复于 2006-07-03 13:35:34 得分 0
markTop
7 楼sublx()回复于 2006-07-03 14:12:57 得分 0
先试一下再给分~~Top
8 楼sublx()回复于 2006-07-03 14:40:45 得分 0
谁能给小弟通俗的说一下checksum的用法...看SQL的连机帮助都不太明白...没用过这个函数..汗一下自己...Top
9 楼LouisXIV(夜游神)回复于 2006-07-03 15:11:39 得分 0
这里只是把一个随机获得的NewID()变成一个整数而已,
已经背离本来的用法,了解一下就可以了Top




