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?