GetDate()
var aldrig deterministisk. Deterministisk betyder, at det altid vil returnere det samme resultat, når det passerer de samme parametre.
Til fælles med rand()
Det evalueres én gang pr. kolonne men når den først er blevet evalueret, forbliver den den samme for alle rækker.
Det er lettere at se denne adfærd med rand()
end getdate()
vælg top 4 rand(), rand() fra sys.objects
Returneret
------------------------------------------------------ 0,0566172633850772.
Hvis du prøver følgende
vælg top 10 getdate(), getdate() fra sys.objects
og se på ComputeScalar-operatøregenskaberne i den faktiske udførelsesplan, vil du se, at GetDate()
evalueres to gange.
NB:Det er muligt, at denne adfærd for evaluering pr. kolonne i stedet for pr. forespørgsel ændrede sig efter SQL 2000 (jeg ved det ikke), men det er ikke, hvad BOL definerer som betydningen af deterministisk.