sql >> Databasteknik >  >> RDS >> Sqlserver

Väljer du funktionen GETDATE() två gånger i en vallista - samma värde för båda?

Nej, de är inte garanterade att returnera identiska värden varje gång. Varje enskild referens till GetDate() är en körtidskonstant och kommer att behålla sitt värde genom hela frågan...

SELECT GETDATE()
FROM large_table

returnerar samma värde i alla rader oavsett hur lång tid det tar att köra frågan.

Men det finns ingen garanti för att olika referenser kommer att ha samma värde.

Du kan se detta som nedan

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

Exempelresultat

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. Exempel på att flytta från MySQL till NoSQL?

  2. Behöver hjälp med SQL för att rangordna sökresultat

  3. Hur man söker efter flera nyckelord i sql

  4. Returnera standardresultat för IN-värde oavsett