GETDATE (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Gibt den aktuellen Zeitstempel 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.
Hinweis
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.
Azure SQL-Datenbank (außer Azure SQL Managed Instance) und Azure Synapse Analytics verwenden UTC. Verwenden Sie AT TIME ZONE in Azure SQL-Datenbank oder Azure Synapse Analytics, wenn Sie Datums- und Uhrzeitinformationen in einer anderen Zeitzone als UTC interpretieren müssen.
Eine Übersicht über alle Datums- und Uhrzeitdatentypen und zugehörigen Funktionen für Transact-SQL finden Sie unter Datums- und Uhrzeitdatentypen und zugehörige Funktionen (Transact-SQL).
Transact-SQL-Syntaxkonventionen
Syntax
GETDATE()
Rückgabetyp
datetime
Bemerkungen
Transact-SQL-Anweisungen können auf eine beliebige Position von GETDATE verweisen, die auf 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 in Bruchteilen von Sekunden unterscheiden.
A. Abrufen des aktuellen Systemdatums und der aktuellen Systemzeit
SELECT SYSDATETIME()
,SYSDATETIMEOFFSET()
,SYSUTCDATETIME()
,CURRENT_TIMESTAMP
,GETDATE()
,GETUTCDATE();
Hier sehen Sie das Ergebnis.
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());
Hier sehen Sie das Ergebnis.
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());
Hier sehen Sie das Ergebnis.
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
Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)
In den folgenden Beispielen werden die drei 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 in Bruchteilen von Sekunden unterscheiden.
D: Abrufen des aktuellen Systemdatums und der aktuellen Systemzeit
SELECT SYSDATETIME()
,CURRENT_TIMESTAMP
,GETDATE();
E. Abrufen des aktuellen Systemdatums
SELECT CONVERT (date, SYSDATETIME())
,CONVERT (date, CURRENT_TIMESTAMP)
,CONVERT (date, GETDATE());
F. Abrufen der aktuellen Systemzeit
SELECT CONVERT (time, SYSDATETIME())
,CONVERT (time, CURRENT_TIMESTAMP)
,CONVERT (time, GETDATE());