Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dwukrotne wybranie funkcji GETDATE() na liście wyboru — ta sama wartość dla obu?

Nie, nie mają gwarancji, że za każdym razem zwrócą identyczne wartości. Każde indywidualne odwołanie do GetDate() jest stałą czasu działania i będzie zachowywać jej wartość przez całe zapytanie...

SELECT GETDATE()
FROM large_table

zwróci tę samą wartość we wszystkich wierszach, niezależnie od tego, jak długo trwa zapytanie.

Ale nie ma gwarancji, że różne odniesienia będą miały tę samą wartość.

Możesz to zobaczyć poniżej

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

Przykładowe wyniki

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak odbudować widok w SQL Server 2008

  2. Instancja SQL Server 2008

  3. Czy możliwa jest synchronizacja w czasie rzeczywistym 2 baz danych SQL Server?

  4. dodaj +- 1 rok w SQL Server

  5. TABLESAMPLE zwraca nieprawidłową liczbę wierszy?