Problém:
Chcete získat aktuální datum a čas v T-SQL, ale nechcete posun časového pásma.
Řešení:
K získání aktuálního data a času bez posunu časového pásma použijeme GETDATE(), CURRENT_TIMESTAMP a SYSDATETIME(). První dvě funkce nám umožňují získat aktuální čas s nižší přesností. (GETDATE() je funkce T-SQL, zatímco CURRENT_TIMESTAMP je standardní funkce SQL; obě funkce vracejí stejný datový typ). Třetí funkce, SYSDATETIME(), získává čas s vyšší přesností.
SELECT CURRENT_TIMESTAMP ;
Zde je výsledek dotazu:
2019-08-14 10:01:06.983
Diskuse:
V databázi SQL Server CURRENT_TIMESTAMP
funkce vrací aktuální datum a čas (tj. čas na počítači, kde běží instance SQL Server) jako datetime
datový typ. Datetime
je čas s nižší přesností, který má maximálně tři zlomkové sekundy. (V našem příkladu je to 983.)
GETDATE() je podobné CURRENT_TIMESTAMP
a vrátí stejný výsledek. Rozdíl je v tom, že CURRENT_TIMESTAMP
je standard SQL, zatímco GETDATE() je specifický pro SQL Server.
SELECT GETDATE() ;
Samozřejmě, pokud chcete získat přesnější aktuální datum a čas bez posunu časového pásma, můžete použít funkci SYSDATETIME(). Tato funkce vrací datetime2
datový typ se sedmi zlomkovými sekundami. Podívejte se na příklad níže:
SELECT SYSDATETIME() ;
Zde je výsledek:
2019-08-14 10:01:06.9754163