SQL Serverで指定範囲のランダムな日付を生成する
方法
SQL Serverで指定範囲のランダムな数値を生成する
http://d.hatena.ne.jp/qaz76/20110511/1305110013
で作ったUDFを併用したUDFを1つ作ります。
--UDF CREATE FUNCTION RANDDATE ( @START AS DATETIME, @END AS DATETIME ) RETURNS DATETIME AS BEGIN RETURN DATEADD(DAY, DBO.RANDNUM(0, DATEDIFF(DAY, @START, @END)), @START) END GO
使用例と結果
WITH T1 AS( SELECT 1 SEQ UNION ALL SELECT SEQ + 1 SEQ FROM T1 WHERE SEQ < 10 ) SELECT DBO.RANDDATE('2011/05/01', '2011/06/13') FROM T1 OPTION (MAXRECURSION 0)
----------------------- 2011-05-31 00:00:00.000 2011-05-24 00:00:00.000 2011-05-08 00:00:00.000 2011-05-20 00:00:00.000 2011-06-04 00:00:00.000 2011-06-13 00:00:00.000 2011-05-05 00:00:00.000 2011-05-24 00:00:00.000 2011-06-09 00:00:00.000 2011-05-06 00:00:00.000 (10 行処理されました)
Work! Enjoy it!