GetDate()
nunca foi determinista. Determinístico significa que sempre retornará o mesmo resultado ao passar os mesmos parâmetros. Em comum com
rand()
É avaliado uma vez por coluna mas uma vez avaliada permanece a mesma para todas as linhas. É mais fácil ver esse comportamento com
rand()
do que getdate()
select top 4 rand(), rand()
from sys.objects
Retornou
---------------------- ----------------------
0.0566172633850772 0.431111195699363
0.0566172633850772 0.431111195699363
0.0566172633850772 0.431111195699363
0.0566172633850772 0.431111195699363
Se você tentar o seguinte
select top 10 getdate(), getdate()
from sys.objects
e observe as propriedades do operador ComputeScalar no plano de execução real, você verá que
GetDate()
é avaliado duas vezes. NB:É possível que esse comportamento de avaliação por coluna e não por consulta tenha mudado após o SQL 2000 (não sei), mas não é isso que BOL define como o significado de determinístico.