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

SYSDATETIME() vs GETDATE() v SQL Server:Jaký je rozdíl?

SQL Server má spoustu funkcí, které vracejí aktuální datum/čas. Dvě z nich jsou GETDATE() a SYSDATETIME() funkce.

Na první pohled se zdá, že tyto dvě funkce dělají totéž – získávají aktuální datum a čas z operačního systému počítače, na kterém běží instance SQL Server.

Mezi těmito dvěma je však jemný rozdíl.

Rozdíl? Typ návratové hodnoty

Hlavní rozdíl mezi GETDATE() a SYSDATETIME() je v typu návratové hodnoty.

  • GETDATE() vrátí datum a čas hodnotu.
  • SYSDATETIME() vrátí datetime2(7) hodnotu.

To znamená, že SYSDATETIME() má větší přesnost ve zlomcích sekund než GETDATE() .

Obě funkce získávají aktuální datum a čas z operačního systému počítače, na kterém běží instance SQL Server, ale zlomková přesnost je odlišná.

Příklad

Zde je příklad demonstrující různé hodnoty, které jsou vráceny pro jednotlivé funkce:

SELECT 
    GETDATE() AS GETDATE,
    SYSDATETIME() AS SYSDATETIME;

Výsledek:

+-------------------------+-----------------------------+
| GETDATE                 | SYSDATETIME                 |
|-------------------------+-----------------------------|
| 2018-06-13 02:48:27.653 | 2018-06-13 02:48:27.6542371 |
+-------------------------+-----------------------------+

Jak již bylo zmíněno, SYSDATETIME() , která vrací datetime2(7) hodnota, má větší zlomkovou přesnost než  GETDATE() , která vrací datum a čas hodnotu.

datetime2 datový typ má také větší rozsah dat a volitelnou uživatelem specifikovanou přesnost.

Který mám použít?

Společnost Microsoft doporučuje používat datetime2 s našimi hodnotami data/času. Tento datový typ je v souladu se standardem SQL a je přenosnější než datetime .

Proto použijte SYSDATETIME() pokud k tomu nemáte důvod.


  1. Java Stored Procedure vs PL/SQL Stored Procedure

  2. Získejte informace o zobrazení pomocí zobrazení informačního schématu VIEWS na serveru SQL Server

  3. Nenechte se zmást bazénem streamů

  4. Jak funguje IIF() na serveru SQL Server