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!