Freigeben über


GETDATE (Transact-SQL)

Gibt den aktuellen Timestamp des Datenbanksystems ohne den Zeitzonenoffset der Datenbank als datetime-Wert zurück. Dieser Wert wird aus dem Betriebssystem des Computers abgeleitet, auf dem die Instanz von SQL Server ausgeführt wird.

HinweisHinweis

SYSDATETIME und SYSUTCDATETIME weisen eine höhere Genauigkeit bezüglich der Bruchteile von Sekunden auf als GETDATE und GETUTCDATE. SYSDATETIMEOFFSET schließt den Zeitzonenoffset des Systems ein. SYSDATETIME, SYSUTCDATETIME und SYSDATETIMEOFFSET können einer Variablen eines beliebigen Datums- und Zeittyps zugewiesen werden.

Eine Übersicht über alle Datums- und Uhrzeitdatentypen und zugehörigen Funktionen von Transact-SQL finden Sie unter Datums- und Uhrzeitdatentypen und zugehörige Funktionen (Transact-SQL).

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

GETDATE ( )

Rückgabetyp

datetime

Hinweise

Transact-SQL-Anweisungen können auf eine beliebige Position von GETDATE verweisen, die an einen datetime-Ausdruck verweisen kann.

GETDATE ist eine nicht deterministische Funktion. Sichten und Ausdrücke, die in einer Spalte auf diese Funktion verweisen, können nicht indiziert werden.

Wenn Sie SWITCHOFFSET mit der GETDATE()-Funktion verwenden, kann dies zu einer verlangsamten Abfrageausführung führen, da der Abfrageoptimierer keine genauen Kardinalitätsschätzungen für den GETDATE-Wert abrufen kann. Es wird empfohlen, den GETDATE-Wert vorab zu berechnen und den Wert dann wie im folgenden Beispiel in der Abfrage anzugeben. Verwenden Sie außerdem den OPTION (RECOMPILE)-Abfragehinweis, um vom Abfrageoptimierer zu erzwingen, dass ein Abfrageplan beim nächsten Ausführen derselben Abfrage erneut kompiliert wird. Dem Optimierer stehen daraufhin genaue Kardinalitätsschätzungen für GETDATE() zur Verfügung, und er erstellt einen effizienteren Abfrageplan.

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

Beispiele

In den folgenden Beispielen werden die sechs SQL Server-Systemfunktionen verwendet, die das aktuelle Datum, die aktuelle Uhrzeit oder beides zurückgeben. Die Werte werden der Reihe nach zurückgegeben und können sich daher im Bereich von Millisekunden unterscheiden.

A.Abrufen des aktuellen Systemdatums und der aktuellen Systemzeit

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

Dies ist das Resultset.

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.Abrufen des aktuellen Systemdatums

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

Dies ist das Resultset.

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.Abrufen der aktuellen Systemzeit

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

Dies ist das Resultset.

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

Siehe auch

Verweis

CAST und CONVERT (Transact-SQL)