1. ホーム
  2. sql

[解決済み] ランダムな日付で行を更新する方法

2023-07-13 08:15:23

質問

DateTimeカラムを持つ単純なSQLテーブルを持っています。すべての行(>100000行)をランダムな日付で更新したいと思います。SQLクエリでこれを行う簡単な方法はありますか?

どのように解決するのですか?

これを使用して、1900年1月1日から2079年6月6日までのsmalldatetimeを生成します(未確認、SQL未インストール)。

DATEADD(day, (ABS(CHECKSUM(NEWID())) % 65530), 0)

NEWIDはRANDを使用するよりも優れています。RANDは単一のSELECTまたはUPDATEで異なる値の行を生成しません(SQL 2000ではそうではありませんでしたが、動作が変更された可能性があります)。

編集:このように

UPDATE
  table
SET
  datetimecol = DATEADD(day, (ABS(CHECKSUM(NEWID())) % 65530), 0)

編集:65535を65530に変更し、範囲上限でのオーバーフローを避けるためにABSを追加しました。