Не, не е гарантирано, че ще връщат идентични стойности всеки път. Всяка отделна препратка към GetDate()
е константа по време на изпълнение и ще запази стойността си през цялата заявка...
SELECT GETDATE()
FROM large_table
ще върне една и съща стойност във всички редове, независимо колко време отнема изпълнението на заявката.
Но няма гаранция, че различните препратки ще имат една и съща стойност.
Можете да видите това по-долу
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
Примерни резултати
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