Ответ 1
Используйте RAND(CHECKSUM(NEWID()))
- NEWID возвращает GUID
- CHECKSUM делает его int, randomly
- Интер-семя RAND
В вашем случае вы можете по модулю checkum, потому что CHECKSUM (NEWID()) уже является случайным.
CHECKSUM(NEWID()) % 365
У меня есть следующий T-SQL для обновления таблицы с тестовыми данными:
UPDATE
SomeTable
SET
Created = GETDATE ( ) - CAST ( RAND ( ) * 365 AS int ) ,
LastUpdated = GETDATE ( ) - CAST ( RAND ( ) * 365 AS int )
Я хочу, чтобы он выбрал случайные дасы в прошлом году, к сожалению, он использует одну и ту же дату для каждой строки. каков наилучший способ заставить его быть случайным в каждой строке, которую он обновляет?
Используйте RAND(CHECKSUM(NEWID()))
В вашем случае вы можете по модулю checkum, потому что CHECKSUM (NEWID()) уже является случайным.
CHECKSUM(NEWID()) % 365
если вы хотите, чтобы дни из прошлого года использовали это (на основе ответа @gbn):
select GETDATE ( ) - ABS( CHECKSUM(NEWID()) % 365 )