2012-02-17 2 views
4

SQL Serverで既存のdatetime値を1と180分の間で追加します。エンドタイムは入力されません。 starttimeにはデータがあります。私たちは、このように終了時刻を移入したいと思います:分の様々な数が追加されるように、はランダムに我々は2つの日時の列、STARTTIMEおよびENDTIMEを持つ大規模なテーブルを持っている

  update t 
     set endtime = DateAdd(mi, some random int between 1 and 180, starttime) 

は、それがT-SQLで行うことができ、すなわち、すべての行が追加分の同じ数を持っていませんスタートタイム?

答えて

6

あなたはCHECKSUM/NEWID()アプローチを使用することにより、各行のための乱数を生成することができます

UPDATE t 
SET endtime = DATEADD(mi, ABS(CHECKSUM(NEWID())) % 180, starttime) 
+0

これは良い答えで、RANDよりも覚えるのが少し簡単。どちらにしても、SQL Serverのバージョン番号が指定されていないため、この点に注意してください。[SQL Server 2005でRANDとNEWIDの動作の変更](http://www.sqlmag.com/article/sql-server/change -in-行動・オブ・ランド・アンド・NEWID・イン・SQLサーバ-2005) –

0
update t 
set endtime = DateAdd(mi, CAST(RAND()*1000 AS INT) % 180, starttime) 
関連する問題