我想在SQL Server中生成随机日期

时间:2015-11-01 14:12:06

标签: sql-server-2008 stored-procedures

任何人都可以告诉我,我想为我的桌子生成100个随机日期:

create table dates (dt date)

这段代码没问题我想把它放在循环下面的代码中,这样就可以生成100个随机日期

SELECT
    DATEADD(second, (rand() * 60 + 1), 
    DATEADD(minute, (rand() * 60 + 1),
    DATEADD(day, (rand() * 365 + 1), 
    DATEADD(year, -1, getdate())
如果可以的话,

generate random日期的任何其他简单代码都会给我。

由于

praviin

2 个答案:

答案 0 :(得分:1)

以下是一个例子:

select top 100 dateadd(ss, cast(abs(checksum(newid())) as int), '19000101') as rndDate
from master..spt_values

小提琴http://sqlfiddle.com/#!3/9eecb7/6049

对于预定义范围:

with cte as(select row_number() over(order by number) % 366 r 
            from master..spt_values)
select top 100 dateadd(dd, r, '20141231') from cte order by newid()

r将包含1到366之间的值。添加到'20141231'将提供所需范围内的值。

答案 1 :(得分:0)

您想要的实际上只能通过存储过程实现。我建议您研究MySQL compound-statement语法,尤其是loop syntax.

您必须输入自己的日期生成代码,但此循环中的代码在调用时应运行10次:

CREATE PROCEDURE iterateTen()
BEGIN
  DECLARE p1 INT DEFAULT 0;
  label1: LOOP
    SET p1 = p1 + 1;
    IF p1 < 10 THEN
     ITERATE label1;
    END IF;
   LEAVE label1;
  END LOOP label1;
END;