Nie, nie mają gwarancji, że za każdym razem zwrócą identyczne wartości. Każde indywidualne odwołanie do GetDate()
jest stałą czasu działania i będzie zachowywać jej wartość przez całe zapytanie...
SELECT GETDATE()
FROM large_table
zwróci tę samą wartość we wszystkich wierszach, niezależnie od tego, jak długo trwa zapytanie.
Ale nie ma gwarancji, że różne odniesienia będą miały tę samą wartość.
Możesz to zobaczyć poniżej
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
Przykładowe wyniki
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