Благодарение на връзките, предоставени от gbn, вярвам, че това отговаря на въпроса ми:
Подобно на rand() Той се оценява веднъж на колона, но веднъж оценен остава същият за всички редове....погледнете свойствата на оператора ComputeScalar в действителния план за изпълнение, ще видите, че GetDate() се оценява два пъти.
Проверих и изглежда, че това все още се случва по същия начин в SQL Server 2008:GetUtcDate()
се оценява два пъти в плана за изпълнение. Няма да доведе до различни резултати на ред, но е възможно да даде различен резултат на колона, ако времето свърши точно.
Редактиране
Всъщност мога да докажа това поведение! Опитайте това:
select GETUTCDATE(), RAND(), RAND(), ...[~3000 RAND()s]..., RAND(), GETUTCDATE()
from [TableOfYourChoice]
В моя експеримент завърших с 2011-05-17 20:47:34.247
в първата колона и 2011-05-17 20:47:34.250
в последната колона, показваща разлика от три милисекунди в резултат на оценката на всички RAND()
s между първото и второто извикване на GETUTCDATE().