O que é CURRENT_DATE ou função de valor de data atual para SQL Server?

Qual é a funcionalidade do SQL Server que permite obter a data atual como um tipo DATE como o SQL Recurso “s CURRENT_DATE padrão. O que é <current date value function> para SQL Server?

Usando PostgreSQL, estou procurando para algo como,

SELECT CURRENT_DATE; current_date -------------- 2018-06-27 (1 row) 

Resposta

Você pode usar GETDATE (return type datetime ) ou SYSDATETIME (tipo de retorno datetime2 ), com a diferença sendo a precisão de até nanossegundos para SYSDATETIME().

Exemplo :

SELECT GETDATE() fn_GetDate, SYSDATETIME() fn_SysDateTime 

Resultados:

 fn_GetDate fn_SysDateTime 2018-06-27 10:31:18.963 2018-06-27 10:31:18.9659170

Veja Funções e tipos de dados de data e hora (Transact-SQL) na documentação do produto.


Para ser completo, o SQL Server também reconhece CURRENT_DATE conforme mencionado na pergunta, como uma função escalar ODBC :

SELECT {fn CURRENT_DATE()}; 

Isso retorna varchar(10), então seria necessário um elenco explícito ou converter para o date tipo de dados:

SELECT CONVERT(date, {fn CURRENT_DATE()}); 

O construído em funções são recomendadas sobre funções escalares ODBC.

Resposta

CAST (... to date) com GETDATE() ou SYSDATETIME()

A melhor maneira é

SELECT CAST( GETDATE() AS date ); 

Por extensão no SQL Server, você pode lançar SYSDATETIME() para a data,

SELECT CAST( SYSDATETIME() AS date ); 

Os documentos em SYSDATETIME (Transact-SQL) mostra mais alguns exemplos,

SELECT CONVERT (date, SYSDATETIME()) ,CONVERT (date, SYSDATETIMEOFFSET()) ,CONVERT (date, SYSUTCDATETIME()) ,CONVERT (date, CURRENT_TIMESTAMP) ,CONVERT (date, GETDATE()) ,CONVERT (date, GETUTCDATE()); /* All returned 2007-04-30 */ 

Pode haver vantagens CAST (GETDATE() AS date), como nativamente retorna menos precisão.

Comentários

  • É assim que eu sempre fiz, embora se você estiver lançando para DATE, faz diferença se o tempo de entrada tem precisão de nanossegundos?

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *