sql >> Base de Datos >  >> RDS >> Sqlserver

¿GETUTCDATE() devolverá el mismo valor si se usa dos veces en la misma declaración?

Gracias a los enlaces proporcionados por gbn, creo que esto responde a mi pregunta:

Al igual que rand(), se evalúa una vez por columna, pero una vez evaluado sigue siendo el mismo para todas las filas... observe las propiedades del operador ComputeScalar en el plan de ejecución real y verá que GetDate() se evalúa dos veces.

Revisé y parece que esto todavía sucede de la misma manera en SQL Server 2008:GetUtcDate() se evalúa dos veces en el plan de ejecución. No va a producir resultados diferentes por fila, pero es posible que produzca un resultado diferente por columna si el momento es el adecuado.

Editar

¡Puedo probar este comportamiento! Prueba esto:

select GETUTCDATE(), RAND(), RAND(), ...[~3000 RAND()s]..., RAND(), GETUTCDATE()
from [TableOfYourChoice]

En mi experimento, terminé con 2011-05-17 20:47:34.247 en la primera columna y 2011-05-17 20:47:34.250 en la columna final, mostrando una diferencia de tres milisegundos como resultado de la evaluación de todos los RAND() s entre la primera y la segunda llamada a GETUTCDATE().