RAND не отличается для каждой строки в T-SQL UPDATE - PullRequest
17 голосов
/ 01 августа 2009

У меня есть следующий T-SQL для обновления таблицы с тестовыми данными:

UPDATE
SomeTable
SET
    Created = GETDATE ( ) - CAST ( RAND ( ) * 365 AS int ) ,
    LastUpdated = GETDATE ( ) - CAST ( RAND ( ) * 365 AS int )

Я хочу, чтобы он выбирал случайные да в прошлом году, к сожалению, для каждой строки используется одна и та же дата. Каков наилучший способ сделать его случайным для каждой строки, которую он обновляет?

Ответы [ 2 ]

34 голосов
/ 01 августа 2009

Использование RAND(CHECKSUM(NEWID()))

  • NEWID возвращает GUID
  • CHECKSUM делает это случайно, случайным образом
  • Инт семена РЭНД

В вашем случае вы можете модулировать контрольную сумму, потому что CHECKSUM (NEWID ()) уже случайный.

CHECKSUM(NEWID()) % 365
3 голосов
/ 01 августа 2009

, если вы хотите, чтобы дни из прошлого года использовались (на основе ответа @ gbn):

select GETDATE ( ) - ABS( CHECKSUM(NEWID()) % 365 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...