4

ある状況下でランダムな日付を入力する必要があるT12 つの日時列 ( StartDate、 )を持つテーブルがあります。EndDate

  • EndDateStartDate値は最小 1 日より大きくなければなりません。

例:

StartDate           EndDate
===========================
2001-04-04          2001-04-06  (2 days)
2001-01-05          2001-01-15  (10 days)
.
.
.

それを一言で言えますか?

PS私の最初のアイデアは、EndDate列をNULLに変更し、最初のステップでNULLのStartDateままEndDateにし、2番目のステートメントでより大きな日付で更新するメカニズムを記述することEndDateでした(レコードごとに異なる日数で)StartDate.

4

3 に答える 3

1
INSERT T1 (StartDate, EndDate)
  select T1, T1 + add_days
  from 
  (select DATEADD(day, (ABS(CHECKSUM(NEWID())) % 65530), 0) T1,
          ROW_NUMBER() OVER(ORDER BY number) add_days
   from [ master ] .. spt_values) X;

sqlfiddle の

于 2013-09-25T12:35:46.793 に答える
1

関数を使用した簡単なrand()もの:

フィドルの例

declare @records int = 100, --Number of records needed 
        @count int = 0, @start int, @end int

while(@records>@count)
begin
    select @start = rand() * 10, @end = rand() * 100, @count+=1
    insert into mytable
    select dateadd(day, @start, getdate()),dateadd(day, @end, getdate())
end

select * from mytable
于 2013-09-25T12:03:55.217 に答える