GETDATE (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureAzure SQL Managed InstanceAzure Synapse AnalyticsEndpoint de análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de dados SQL no Microsoft Fabric

Devolve o carimbo temporal atual do sistema de base de dados como valor de data-hora sem o deslocamento do fuso horário da base de dados. Este valor é derivado do sistema operativo do computador onde a instância do SQL Server está a correr.

Observação

SYSDATETIME e SYSUTCDATETIME têm mais precisão em frações de segundo do que GETDATE e GETUTCDATE. O SYSDATETIMEOFFSET inclui o deslocamento do fuso horário do sistema. SYSDATETIME, SYSUTCDATETIME e SYSDATETIMEOFFSET podem ser atribuídos a uma variável de qualquer um dos tipos de data e hora.

Base de Dados SQL do Azure (com exceção do Azure SQL Managed Instance) e Azure Synapse Analytics seguem o UTC. Use AT TIME ZONE no Base de Dados SQL do Azure ou Azure Synapse Analytics se precisar de interpretar informações de data e hora num fuso horário que não seja UTC.

Para obter uma visão geral de todos os tipos e funções de dados de data e hora Transact-SQL, consulte Tipos de dados e funções de data e hora (Transact-SQL).

Transact-SQL convenções de sintaxe

Sintaxe

GETDATE()

Tipo de Retorno

datetime

Observações

Transact-SQL sentenças podem referir-se a GETDATE em qualquer lugar, podem referir-se a uma expressão de data-hora .

GETDATE é uma função não determinística. Vistas e expressões que referenciam esta função numa coluna não podem ser indexadas.

Usar SWITCHOFFSET com a função GETDATE() pode fazer com que a consulta corra lentamente porque o otimizador da consulta não consegue obter estimativas precisas de cardinalidade para o valor GETDATE. Recomendamos que pré-calcule o valor GETDATE e depois especifique esse valor na consulta, como mostrado no exemplo seguinte. Além disso, use a dica de consulta OPTION (RECOMPILE) para forçar o otimizador de consultas a recompilar um plano de consulta na próxima vez que a mesma consulta for executada. O otimizador terá então estimativas precisas de cardinalidade para o GETDATE() e produzirá um plano de consulta mais eficiente.

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

Examples

Os exemplos a seguir usam as seis funções do sistema SQL Server que retornam a data e a hora atuais para retornar a data, a hora ou ambas. Os valores são retornados em série; portanto, seus segundos fracionários podem ser diferentes.

A. Obtenção da data e hora atuais do sistema

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

Aqui está o conjunto de resultados.

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. Obtenção da data atual do sistema

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

Aqui está o conjunto de resultados.

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. Obter a hora atual do sistema

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

Aqui está o conjunto de resultados.

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

Exemplos: Azure Synapse Analytics

Os exemplos seguintes usam as três funções do sistema SQL Server que retornam a data e hora atuais para devolver a data, hora ou ambas. Os valores são retornados em série; portanto, seus segundos fracionários podem ser diferentes.

D. Obtenção da data e hora atuais do sistema

SELECT SYSDATETIME()
    ,CURRENT_TIMESTAMP
    ,GETDATE();

E. Obtenção da data atual do sistema

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

F. Obter a hora atual do sistema

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