Problema:
Você gostaria de obter a data e hora atuais no T-SQL, mas não deseja o deslocamento do fuso horário.
Solução:
Usaremos GETDATE(), CURRENT_TIMESTAMP e SYSDATETIME() para obter a data e hora atuais sem o deslocamento de fuso horário. As duas primeiras funções nos permitem obter a hora atual com menor precisão. (GETDATE() é uma função T-SQL, enquanto CURRENT_TIMESTAMP é uma função SQL Standard; ambas as funções retornam o mesmo tipo de dados). A terceira função, SYSDATETIME(), obtém um tempo de maior precisão.
SELECT CURRENT_TIMESTAMP ;
Segue o resultado da consulta:
2019-08-14 10:01:06.983
Discussão:
Em um banco de dados SQL Server, o
CURRENT_TIMESTAMP
A função retorna a data e hora atuais (ou seja, a hora na máquina em que a instância do SQL Server é executada) como um datetime
tipo de dados. Datetime
é um tempo de menor precisão que tem um máximo de três segundos fracionários. (No nosso exemplo, isso é 983.) GETDATE() é semelhante ao
CURRENT_TIMESTAMP
e retorna o mesmo resultado. A diferença é que CURRENT_TIMESTAMP
é o padrão SQL, enquanto GETDATE() é específico do SQL Server. SELECT GETDATE() ;
Claro, se você deseja obter uma data e hora atuais de maior precisão sem um deslocamento de fuso horário, você pode usar a função SYSDATETIME(). Esta função retorna um
datetime2
tipo de dados com sete segundos fracionários. Veja o exemplo abaixo:SELECT SYSDATETIME() ;
Aqui está o resultado:
2019-08-14 10:01:06.9754163