7

SQL Server 2008 で時間データ型を含む大規模なデータ セットを生成しようとしています。既にテーブルに時間以外のデータがいくつかあるため、プロセス全体を T-SQL に保持し、insert-into- を使用したいと考えています。あるテーブルから部分的なデータを取得し、それを時間などの生成されたデータとともに次のテーブルに挿入することを選択します。

8:00 と 9:00 の間のランダムな時間など、2 つのポイントの間にランダムな時間 (7) を生成する方法が必要です。2008 年より前の投稿をいくつか見つけましたが、SQL Server 2008 の時間型に対処するものはありません。

4

2 に答える 2

8

1日に86,400,000ミリ秒あるため、次のようにしてランダムな時間値を取得できます。

select dateadd(millisecond, cast(86400000 * RAND() as int), convert(time, '00:00'))

8:00から9:00の間の時間を必要とする例では、1時間に3,600,000ミリ秒があるので、次のようにクエリを変更します。

select dateadd(millisecond, cast(3600000 * RAND() as int), convert(time, '08:00'))

新しいテーブルに配置するには、更新(s ... l ... o ... w ...)を使用してT-SQLループを実行するかSELECT INTO、元のテーブルから新しいテーブルにを実行します。テーブル。

于 2010-12-06T00:09:03.687 に答える
5

100行のテストデータを生成するには、以下を使用できます。

WITH E00(N) AS (SELECT 1 UNION ALL SELECT 1),
        E02(N) AS (SELECT 1 FROM E00 a, E00 b),
        E04(N) AS (SELECT 1 FROM E02 a, E02 b),
        E08(N) AS (SELECT 1 FROM E04 a, E04 b),
        E16(N) AS (SELECT 1 FROM E08 a, E08 b),
        E32(N) AS (SELECT 1 FROM E16 a, E16 b)
SELECT TOP 100 CAST(DATEADD(SECOND,ABS(CHECKSUM(NEWID()))%3600,'08:00') AS TIME)
FROM E32
于 2010-12-06T00:08:29.163 に答える