Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Избиране на функцията GETDATE() два пъти в списък за избор - същата стойност и за двете?

Не, не е гарантирано, че ще връщат идентични стойности всеки път. Всяка отделна препратка към GetDate() е константа по време на изпълнение и ще запази стойността си през цялата заявка...

SELECT GETDATE()
FROM large_table

ще върне една и съща стойност във всички редове, независимо колко време отнема изпълнението на заявката.

Но няма гаранция, че различните препратки ще имат една и съща стойност.

Можете да видите това по-долу

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

Примерни резултати

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. Разлика между конвертирането на дата и час в MSExcel и SQL Server

  2. Единичен модел за контекст на данни

  3. newid() вътре в sql сървърната функция

  4. SQL:Връща одит за записи за всяка колона

  5. Попълване на липсващи дати по групи