Trabalhando com a data e hora atual do servidor SQL Server
O SQL Server oferece 3 comandos para visualizarmos a data e hora atual do servidor:
CURRENT_TIMESTAMP: retorna a data e hora como um valor datetime e sem o deslocamento de fuso horário do banco de dados. Esse valor é derivado do sistema operacional do computador no qual a instância do SQL Server está sendo executada.
GETDATE(): retorna a data e hora como um valor datetime e sem o deslocamento de fuso horário do banco de dados. Esse valor é derivado do sistema operacional do computador no qual a instância do SQL Server está sendo executada. Sim!!! É a mesma definição utilizada para CURRENT_TIMESTAMP.
{fn NOW()}: é uma função canônica ODBC, que pode ser usado em comandos T-SQL uma vez que o fornecedor do driver de OLE DB fornecça suporte para o SQL Server.
Analisando cuidadosamente, os três comandos são iguais. Não existe uma diferença notável na performance do SQL Server usando um outro. No fim das contas, a maioria acaba utilizando o GETDATE(), já que é o mais conhecido entre eles.
Executando estes comandos no SQL Server 2008 até o 2016, vemos que o resultado é realmente o mesmo.
Uma situação interessante que eu descobri entre CURRENT_TIMESTAMP e GETDATE() foi essa:
Observem este script. Embora as colunas ColunaA e Coluna C foram definidas com o valor default de CURRENT_TIMESTAMP, o SQL Server armazena a função GETDATE() na estrutura da tabela. E esse resultado também é apresentado na geração do script da tabela, além do retorno da função sp_help.
Então, depois de pensar muito, por aproximadamente, 0,0001 segundo, optei por continuar a usar o GETDATE() mesmo. Por que? Eu gosto de escrever GETDATE()...