Partilhar via


GETDATE (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade 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.

Azure SQL Database (com exceção do Azure SQL Managed Instance) e Azure Synapse Analytics seguem o UTC. Use AT TIME ZONE no Azure SQL Database 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 and Analytics Platform System (PDW)

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());

Ver também

CAST e CONVERT (Transact-SQL)