Masalah OP miliki saat hanya menggunakan rand()
karena evaluasinya sekali per kueri .
Dari dokumentasi :
Pendekatan yang dijelaskan di bawah menghilangkan pengoptimalan dan menekan perilaku ini, jadi rand()
dievaluasi sekali per baris :
dateadd( second
, rand(cast(newid() as varbinary)) * 43200
, cast('08:00:00' as time) )
newid()
menghasilkan nilai unik dari jenisuniqueidentifier
;- nilai dikonversi dengan
cast
untuk digunakan sebagai benih dirand([seed])
berfungsi untuk menghasilkanfloat
pseudo-acak nilai dari 0 sampai 1 , dan sebagai benih selalu unik, nilai yang dikembalikan juga unik .