Sdílet prostřednictvím


GETDATE (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Vrací aktuální časové razítko databázového systému jako hodnotu datového času bez posunu časového pásma databáze. Tato hodnota je odvozena z operačního systému počítače, na kterém běží instance SQL Serveru.

Poznámka:

SYSDATETIME a SYSUTCDATETIME mají větší přesnost zlomků sekund než GETDATE a GETUTCDATE. SYSDATETIMEOFFSET zahrnuje posun systémového časového pásma. SYSDATETIME, SYSUTCDATETIME a SYSDATETIMEOFFSET lze přiřadit proměnné libovolného typu data a času.

Azure SQL Database (s výjimkou Azure SQL Managed Instance) a Azure Synapse Analytics následují UTC. Použijte AT TIME ZONE v Azure SQL Database nebo Azure Synapse Analytics, pokud potřebujete interpretovat informace o datu a čase v ne-UTC časovém pásmu.

Přehled všech datových typů a funkcí Transact-SQL data a času najdete v tématu datové typy a funkce data a času (Transact-SQL).

Transact-SQL konvence syntaxe

Syntaxe

GETDATE()

Návratový typ

datetime

Poznámky

Transact-SQL příkazy mohou odkazovat na GETDATE kdekoliv, kde mohou odkazovat na výraz datetime .

GETDATE je nedeterministická funkce. Pohledy a výrazy, které tuto funkci odkazují ve sloupci, nelze indexovat.

Použití SWITCHOFFSET s funkcí GETDATE() může způsobit, že dotaz běží pomalu, protože optimalizátor dotazu není schopen získat přesné odhady kardinálnosti pro hodnotu GETDATE. Doporučujeme předpočítat hodnotu GETDATE a poté ji zadat v dotazu, jak je ukázáno v následujícím příkladu. Dále použijte hint OPTION (RECOMPILE), abyste donutili optimalizátor dotazu znovu zkompilovat plán dotazu při dalším provedení stejného dotazu. Optimalizátor pak bude mít přesné odhady kardinálnosti pro GETDATE() a vytvoří efektivnější plán dotazů.

DECLARE @dt datetimeoffset = switchoffset (CONVERT(datetimeoffset, GETDATE()), '-04:00');
SELECT * FROM t
WHERE c1 > @dt OPTION (RECOMPILE);

Examples

Následující příklady používají šest systémových funkcí SYSTÉMU SQL Server, které vracejí aktuální datum a čas k vrácení data, času nebo obojího. Hodnoty jsou vráceny v řadě; proto se jejich zlomkové sekundy můžou lišit.

A. Získání aktuálního data a času systému

SELECT SYSDATETIME()
    ,SYSDATETIMEOFFSET()
    ,SYSUTCDATETIME()
    ,CURRENT_TIMESTAMP
    ,GETDATE()
    ,GETUTCDATE();

Tady je soubor výsledků.

SYSDATETIME()      2007-04-30 13:10:02.0474381
SYSDATETIMEOFFSET()2007-04-30 13:10:02.0474381 -07:00
SYSUTCDATETIME()   2007-04-30 20:10:02.0474381
CURRENT_TIMESTAMP  2007-04-30 13:10:02.047
GETDATE()          2007-04-30 13:10:02.047
GETUTCDATE()       2007-04-30 20:10:02.047

B. Získání aktuálního systému data

SELECT CONVERT (date, SYSDATETIME())
    ,CONVERT (date, SYSDATETIMEOFFSET())
    ,CONVERT (date, SYSUTCDATETIME())
    ,CONVERT (date, CURRENT_TIMESTAMP)
    ,CONVERT (date, GETDATE())
    ,CONVERT (date, GETUTCDATE());

Tady je soubor výsledků.

SYSDATETIME()          2007-05-03
SYSDATETIMEOFFSET()    2007-05-03
SYSUTCDATETIME()       2007-05-04
CURRENT_TIMESTAMP      2007-05-03
GETDATE()              2007-05-03
GETUTCDATE()           2007-05-04

C. Získání aktuálního systémového času

SELECT CONVERT (time, SYSDATETIME())
    ,CONVERT (time, SYSDATETIMEOFFSET())
    ,CONVERT (time, SYSUTCDATETIME())
    ,CONVERT (time, CURRENT_TIMESTAMP)
    ,CONVERT (time, GETDATE())
    ,CONVERT (time, GETUTCDATE());

Tady je soubor výsledků.

SYSDATETIME()       13:18:45.3490361
SYSDATETIMEOFFSET() 13:18:45.3490361
SYSUTCDATETIME()    20:18:45.3490361
CURRENT_TIMESTAMP   13:18:45.3470000
GETDATE()           13:18:45.3470000
GETUTCDATE()        20:18:45.3470000

Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)

Následující příklady využívají tři funkce systému SQL Server, které vracejí aktuální datum a čas a vracejí datum, čas nebo obojí. Hodnoty jsou vráceny v řadě; proto se jejich zlomkové sekundy můžou lišit.

D. Získání aktuálního data a času systému

SELECT SYSDATETIME()
    ,CURRENT_TIMESTAMP
    ,GETDATE();

E. Získání aktuálního systému data

SELECT CONVERT (date, SYSDATETIME())
    ,CONVERT (date, CURRENT_TIMESTAMP)
    ,CONVERT (date, GETDATE());

F. Získání aktuálního systémového času

SELECT CONVERT (time, SYSDATETIME())
    ,CONVERT (time, CURRENT_TIMESTAMP)
    ,CONVERT (time, GETDATE());

Viz také

CAST a CONVERT (Transact-SQL)