sql >> Database teknologi >  >> RDS >> Sqlserver

Valg af funktionen GETDATE() to gange i en udvalgt liste - samme værdi for begge?

Nej, de er ikke garanteret at returnere identiske værdier hver gang. Hver individuel reference til GetDate() er en køretidskonstant og vil beholde sin værdi gennem hele forespørgslen...

SELECT GETDATE()
FROM large_table

returnerer den samme værdi i alle rækker, uanset hvor lang tid det tager at køre forespørgslen.

Men der er ingen garanti for, at forskellige referencer har samme værdi.

Du kan se dette som nedenfor

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

Eksempelresultater

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


  1. Henter XML-elementer fra XMLType Oracle

  2. Hvordan medtager man manglende data for flere grupperinger inden for tidsrummet?

  3. Er jeg sikker mod SQL-injektioner?

  4. Har du brug for hjælp til at oprette brugerdefineret brugerregistrerings-/loginscript