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

Seleccionar la función GETDATE() dos veces en una lista de selección:¿el mismo valor para ambos?

No, no se garantiza que devuelvan valores idénticos cada vez. Cada referencia individual a GetDate() es una constante de tiempo de ejecución y mantendrá su valor a lo largo de la consulta...

SELECT GETDATE()
FROM large_table

devolverá el mismo valor en todas las filas, independientemente del tiempo que tarde en ejecutarse la consulta.

Pero no hay garantía de que distintas referencias tengan el mismo valor.

Puedes ver esto a continuación

SET NOCOUNT ON;

DECLARE @T TABLE 
(
rownum INT IDENTITY(1,1) PRIMARY KEY,
d1 DATETIME,
d2 DATETIME
)

WHILE (5 > (SELECT COUNT(*) FROM @T WHERE d1 <> d2))
    BEGIN
    DELETE FROM @T WHERE d1 = d2
    INSERT INTO @T 
    SELECT GETDATE(),GETDATE()
    END

SELECT * FROM @T

Resultados de ejemplo

rownum      d1                      d2
----------- ----------------------- -----------------------
22381       2011-05-18 12:24:14.433 2011-05-18 12:24:14.437
30912       2011-05-18 12:24:15.420 2011-05-18 12:24:15.423
43234       2011-05-18 12:24:16.717 2011-05-18 12:24:16.720
113360      2011-05-18 12:24:24.210 2011-05-18 12:24:24.213
147855      2011-05-18 12:24:27.817 2011-05-18 12:24:27.820