Berkat tautan yang disediakan oleh gbn, saya yakin ini menjawab pertanyaan saya:
Sama dengan rand() Ini dievaluasi sekali per kolom tetapi setelah dievaluasi tetap sama untuk semua baris....lihat properti operator ComputeScalar dalam rencana eksekusi aktual Anda akan melihat bahwa GetDate() dievaluasi dua kali.
Saya memeriksa, dan tampaknya ini masih terjadi dengan cara yang sama di SQL Server 2008:GetUtcDate()
dievaluasi dua kali dalam rencana eksekusi. Ini tidak akan menghasilkan hasil yang berbeda per baris, tetapi mungkin saja menghasilkan hasil yang berbeda per kolom jika waktunya tepat.
Sunting
Saya benar-benar dapat membuktikan perilaku ini! Coba ini:
select GETUTCDATE(), RAND(), RAND(), ...[~3000 RAND()s]..., RAND(), GETUTCDATE()
from [TableOfYourChoice]
Dalam eksperimen saya, saya mendapatkan 2011-05-17 20:47:34.247
di kolom pertama dan 2011-05-17 20:47:34.250
di kolom terakhir, menunjukkan perbedaan tiga milidetik sebagai hasil evaluasi semua RAND()
s antara panggilan pertama dan kedua ke GETUTCDATE().