sql >> Database >  >> RDS >> Sqlserver

De functie GETDATE() twee keer selecteren in een selectielijst - dezelfde waarde voor beide?

Nee, het is niet gegarandeerd dat ze elke keer identieke waarden retourneren. Elke individuele verwijzing naar GetDate() is een runtime-constante en behoudt zijn waarde gedurende de hele query...

SELECT GETDATE()
FROM large_table

geeft dezelfde waarde terug in alle rijen, ongeacht hoe lang het duurt om de query uit te voeren.

Maar er is geen garantie dat verschillende referenties dezelfde waarde hebben.

Je kunt dit zien zoals hieronder

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

Voorbeeldresultaten

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. SQL 2008:stopwoorden uitschakelen voor zoekopdrachten op volledige tekst

  2. Kan ik de datum in mySQL invoegen in DD-Mon-YY-formaat?

  3. selecteer relevantie titel op basis van tag vergelijkbaar met like met mysql

  4. Selecteer rijen uit een MySQL-tabel waarbij waarde een array is?