Le problème OP eu en utilisant juste rand()
est dû à son évaluation une fois par requête .
De la documentation :
L'approche décrite ci-dessous supprime l'optimisation et supprime ce comportement, donc rand()
est évalué une fois par ligne :
dateadd( second
, rand(cast(newid() as varbinary)) * 43200
, cast('08:00:00' as time) )
newid()
génère une valeur unique de typeuniqueidentifier
;- la valeur est convertie avec
cast
à utiliser comme graine dansrand([seed])
fonction pour générer unfloat
pseudo-aléatoire valeur de 0 à 1 , et comme graine est toujours unique, la valeur renvoyée est également unique .