Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

GETUTCDATE() retornará o mesmo valor se usado duas vezes na mesma instrução?


Graças aos links fornecidos pelo gbn, acredito que isso responda à minha pergunta:

Em comum com rand() Ele é avaliado uma vez por coluna, mas uma vez avaliado permanece o mesmo para todas as linhas.... observe as propriedades do operador ComputeScalar no plano de execução real, você verá que GetDate() é avaliado duas vezes.

Verifiquei e parece que isso ainda acontece da mesma maneira no SQL Server 2008:GetUtcDate() é avaliado duas vezes no plano de execução. Ele não produzirá resultados diferentes por linha, mas é possível que produza um resultado diferente por coluna se o tempo for correto.

Editar


Eu posso realmente provar esse comportamento! Tente isto:
select GETUTCDATE(), RAND(), RAND(), ...[~3000 RAND()s]..., RAND(), GETUTCDATE()
from [TableOfYourChoice]

No meu experimento, acabei com 2011-05-17 20:47:34.247 na primeira coluna e 2011-05-17 20:47:34.250 na coluna final, mostrando uma diferença de três milissegundos como resultado da avaliação de todos os RAND() s entre a primeira e a segunda chamadas para GETUTCDATE().