Novidade no SQL Server 2022: A Função DATETRUNC


O SQL Server 2022 trouxe uma série de novidades muito aguardadas pelos desenvolvedores e DBAs, e uma delas é a nova função DATETRUNC. Essa função simplifica bastante o trabalho com datas, especialmente quando precisamos truncar valores de data/hora para uma parte específica como ano, mês, dia, etc.

Se você já precisou agrupar dados por mês ou comparar apenas partes de uma data, provavelmente usou funções como DATEADD e DATEDIFF de forma combinada. A boa notícia é que, agora, com DATETRUNC, esse processo ficou muito mais limpo e direto.


O que é a função DATETRUNC?

A função DATETRUNC retorna um valor de data/hora truncado para o limite inferior da parte da data especificada (por exemplo: truncar uma data para o início do mês, início do dia, etc).

Essa função está disponível a partir do SQL Server 2022, e também é compatível com o Banco de Dados SQL do Azure e a Instância Gerenciada de SQL do Azure.


Sintaxe

DATETRUNC(date_part, date_expression)

date_part: A parte da data para a qual o valor será truncado.

date_expression: A expressão de data que será truncada.


Argumentos Válidos

Você pode truncar para várias partes da data. Aqui estão algumas opções:

date_partDescrição
year, yyyy, yyInício do ano
quarter, qq, qInício do trimestre
month, mm, mInício do mês
day, dd, dInício do dia
week, wk, wwInício da semana
hour, hhInício da hora
minute, mi, nInício do minuto
second, ss, sInício do segundo
millisecond, msInício do milissegundo

Exemplos

🔹 Truncar para o início do mês

SELECT DATETRUNC(MONTH, '2025-04-14 13:45:30') AS Truncado;

Resultado:

2025-04-01 00:00:00.000

🔹 Truncar para o início do ano

SELECT DATETRUNC(YEAR, '2025-04-14 13:45:30') AS Truncado;

Resultado:

2025-01-01 00:00:00.000

🔹 Truncar uma coluna de data

SELECT DATETRUNC(DAY, OrderDate) AS DiaPedido, COUNT(*) AS TotalPedidos
FROM Sales.Orders
GROUP BY DATETRUNC(DAY, OrderDate);

Esse exemplo é perfeito para agrupar pedidos por dia de forma limpa e direta — sem a necessidade de converter tipos ou manipular strings.


Comparação com Métodos Antigos

Antes do SQL Server 2022, você teria que usar combinações de DATEADD e DATEDIFF para fazer algo parecido:

Truncar para o início do mês (antes do SQL 2022)
SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, '2025-04-14 13:45:30'), 0);

Com DATETRUNC, essa complexidade desaparece.

Conclusão

A função DATETRUNC é uma adição poderosa ao arsenal de qualquer profissional que trabalha com SQL Server. Ela torna o código mais legível, limpo e eficiente, especialmente em operações de agrupamento, análise temporal e relatórios.

Se você ainda não testou essa novidade, vale a pena experimentar em seus scripts e procedures. Afinal, menos código e mais clareza são sempre bem-vindos!


Deixe um comentário