Condividi tramite


GETDATE (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW) Endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric

Restituisce il timestamp di sistema del database corrente come valore datetime senza la differenza di fuso orario del database. Questo valore è derivato dal sistema operativo del computer in cui è in esecuzione l'istanza di SQL Server.

Nota

La precisione in secondi frazionari di SYSDATETIME e SYSUTCDATETIME è maggiore di quella di GETDATE e GETUTCDATE. SYSDATETIMEOFFSET include la differenza di fuso orario di sistema. SYSDATETIME, SYSUTCDATETIME e SYSDATETIMEOFFSET possono essere assegnate a una variabile di qualsiasi tipo di data e ora.

Database SQL di Azure (ad eccezione di Istanza gestita di SQL di Azure) e Azure Synapse Analytics seguono l'ora UTC. Se è necessario interpretare le informazioni relative a data e ora in un fuso orario non UTC, usare AT TIME ZONE in Database SQL di Azure o Azure Synapse Analytics.

Per una panoramica di tutte le funzioni e i tipi di dati di data e ora Transact-SQL, vedere Funzioni e tipi di dati di data e ora (Transact-SQL).

Convenzioni relative alla sintassi Transact-SQL

Sintassi

GETDATE()

Tipo restituito

datetime

Osservazioni:

Le istruzioni Transact-SQL possono fare riferimento a GETDATE in qualsiasi punto in cui possono fare riferimento a un'espressione datetime.

GETDATE è una funzione non deterministica. Le viste e le espressioni che fanno riferimento a questa funzione in una colonna non sono indicizzabili.

Se si utilizza SWITCHOFFSET con la funzione GETDATE() è possibile che la query venga eseguita lentamente perché Query Optimizer non è in grado di ottenere stime di cardinalità corrette per il valore GETDATE. Si consiglia di precalcolare il valore GETDATE e specificare il valore nella query come illustrato nell'esempio seguente. Inoltre, usare l'hint per la query OPTION (RECOMPILE) per forzare Query Optimizer a compilare un nuovo piano di query alla successiva esecuzione della stessa query. Query Optimizer otterrà le stime di cardinalità corrette per GETDATE() e produrrà un piano di query più efficiente.

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

Esempi

Negli esempi seguenti vengono usate le sei funzioni di sistema di SQL Server che restituiscono data e ora corrente per restituire la data, l'ora o entrambe. I valori sono restituiti in serie. Pertanto, i secondi frazionari potrebbero essere diversi.

R. Recupero della data e dell'ora correnti del sistema

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

Il set di risultati è il seguente.

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. Recupero della data corrente del sistema

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

Il set di risultati è il seguente.

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. Recupero dell'ora corrente del sistema

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

Il set di risultati è il seguente.

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

Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)

Negli esempi seguenti vengono usate le tre funzioni di sistema di SQL Server che restituiscono data e ora corrente per restituire la data, l'ora o entrambe. I valori sono restituiti in serie. Pertanto, i secondi frazionari potrebbero essere diversi.

D. Recupero della data e dell'ora correnti del sistema

SELECT SYSDATETIME()
    ,CURRENT_TIMESTAMP
    ,GETDATE();

E. Recupero della data corrente del sistema

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

F. Recupero dell'ora corrente del sistema

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

Vedi anche

CAST e CONVERT (Transact-SQL)