GETDATE (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

Returnerar den aktuella tidsstämpeln för databassystemet som ett datum-tidsvärde utan databasens tidszonförskjutning. Detta värde härleds från operativsystemet på den dator där instansen av SQL Server körs.

Anmärkning

SYSDATETIME och SYSUTCDATETIME har mer bråkdels sekundprecision än GETDATE och GETUTCDATE. SYSDATETIMEOFFSET inkluderar systemets tidszonsförskjutning. SYSDATETIME, SYSUTCDATETIME och SYSDATETIMEOFFSET kan tilldelas en variabel av någon av datum- och tidstyperna.

Azure SQL Database (med undantag för Azure SQL Managed Instance) och Azure Synapse Analytics följer UTC. Använd AT TIME ZONE i Azure SQL Database eller Azure Synapse Analytics om du behöver tolka datum- och tidsinformation i en icke-UTC-tidszon.

En översikt över alla datatyper och funktioner för datum och tid Transact-SQL finns i Datatyper och funktioner för datum och tid (Transact-SQL).

Transact-SQL syntaxkonventioner

Syntax

GETDATE()

Returtyp

datetime

Anmärkningar

Transact-SQL uttalanden kan hänvisa till GETDATE var som helst de kan hänvisa till ett datumtidsuttryck .

GETDATE är en icke-deterministisk funktion. Vyer och uttryck som refererar till denna funktion i en kolumn kan inte indexeras.

Att använda SWITCHOFFSET med funktionen GETDATE() kan göra att frågan går långsamt eftersom frågeoptimeraren inte kan få exakta kardinalitetsuppskattningar för GETDATE-värdet. Vi rekommenderar att du förberäknar GETDATE-värdet och sedan specificerar det värdet i frågan som visas i följande exempel. Använd dessutom OPTION (REKOMPILE)-frågetipset för att tvinga frågeoptimeraren att kompilera om en frågeplan nästa gång samma fråga körs. Optimeraren kommer då att ha exakta kardinalitetsuppskattningar för GETDATE() och producera en mer effektiv frågeplan.

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

Examples

I följande exempel används de sex SQL Server-systemfunktioner som returnerar aktuellt datum och tid för att returnera datum, tid eller båda. Värdena returneras i serie. Därför kan deras bråksekunder vara olika.

A. Att få aktuellt systemdatum och tid

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

Här är resultatet.

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. Att få det aktuella systemdatumet

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

Här är resultatet.

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. Att få den aktuella systemtiden

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

Här är resultatet.

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

Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)

Följande exempel använder de tre SQL Server-systemfunktionerna som returnerar aktuellt datum och tid för att returnera datum, tid eller båda. Värdena returneras i serie. Därför kan deras bråksekunder vara olika.

D. Att få aktuellt systemdatum och tid

SELECT SYSDATETIME()
    ,CURRENT_TIMESTAMP
    ,GETDATE();

E. Att få det aktuella systemdatumet

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

F. Att få den aktuella systemtiden

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

Se även

CAST och CONVERT (Transact-SQL)