sql >> Databáze >  >> RDS >> Sqlserver

Výběr funkce GETDATE() dvakrát ve výběrovém seznamu -- stejná hodnota pro obě?

Ne, není zaručeno, že pokaždé vrátí stejné hodnoty. Každý jednotlivý odkaz na GetDate() je běhová konstanta a zachová si svou hodnotu v průběhu dotazu...

SELECT GETDATE()
FROM large_table

vrátí stejnou hodnotu ve všech řádcích bez ohledu na to, jak dlouho trvá spuštění dotazu.

Neexistuje však žádná záruka, že různé reference budou mít stejnou hodnotu.

Můžete to vidět níže

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

Příklad výsledků

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. Přidejte hodnoty ze stejného data

  2. Jak vypustit sloupec s omezením v SQL Server

  3. Databázové modelování pro mezinárodní a vícejazyčné účely

  4. Tabulka MySQL pouze s varcharem jako cizím klíčem