随机日期SQL

时间:2013-02-14 15:23:41

标签: sql sql-server tsql date

你能帮忙吗?

我有一个到达日期列,需要添加5000行,其中包含2010年的随机日期。

例如:01/01/201025/8/201003/05/201031/12/2010

我认为这是一个INSERT声明,但我不确定。

由于

韦恩

USE Occupancy
CREATE TABLE Book
(BookNumber varchar(30),
ArrivalDate int)

DECLARE @BookNumber varchar(30)
DECLARE @ArrivalDate int

SET @BookNumber = 1
SET @ArrivalDate = 0

WHILE @BookNumber <= 5000
WHILE @ArrivalDate <= 5000

BEGIN
INSERT INTO Book (BookNumber,ArrivalDate)
SELECT 'B' + Right ('00000000' + CAST(@BookNumber AS varchar(30)),8),
DATEADD(day, CAST(RAND() * 365 as int), '2010-1-1')

SET @BookNumber = @BookNumber + 1
SET @ArrivalDate = @ArrivalDate + 1
END

1 个答案:

答案 0 :(得分:5)

DECLARE @counter int
SET @counter = 0
WHILE @counter < 5000
BEGIN
    INSERT INTO myTable (arrivalDate)
    SELECT DATEADD(day, CAST(RAND() * 365 as int), '2010-1-1')
    SET @counter = @counter + 1
END

如果你有一个数字表或generator,你可以避免循环:

INSERT INTO myTable (arrivalDate)
SELECT DATEADD(day, ABS(CHECKSUM(NEWID()) % 365), '2010-1-1')
FROM ( GenerateRowNumbers(5000, 1) ) t