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.