0

我已经能够使用以下代码随机化日期

DATEADD (day, CAST (RAND () * 365 as int), '2010-1-1') 

我现在需要对 1 到 7 和 1 到 126 之间的数字执行此操作。

你能帮我吗?

SELECT        'Booking_' + Cast(Seed.Seed as varchar(25)) as BookingNo,
DATEADD(day, ABS(CHECKSUM(NEWID()) % 800), '1 Jan 2010') as ArrivalDate,
DATEADD (day, CAST (RAND () * 365 as int), '2010-1-1') % 6 + 1 as PitchType

FROM            Seed CROSS JOIN
                         Seed AS Seed_1 CROSS JOIN
                         Seed AS Seed_2 CROSS JOIN
                         Seed AS Seed_3 CROSS JOIN
                         Seed AS Seed_4 CROSS JOIN
                         Seed AS Seed_5
4

2 回答 2

3

您可以使用:

SELECT CAST(RAND(CHECKSUM(NEWID())) * 7 + 1 AS INT)

其中 7 是随机性的上限。

于 2013-02-15T12:11:05.160 回答
0

如果你有一个数字表,这很容易,例如内置数字表

1到7之间

select top 1 number
from master..spt_values
where type ='p'
and number between 1 and 7
order by newid()

在 1 到 126 之间

select top 1 number
from master..spt_values
where type ='p'
and number between 1 and 126
order by newid()

继续执行查询,您会看到每次都会得到不同的数字

于 2013-02-15T12:01:49.160 回答