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_part | Descrição |
|---|---|
| year, yyyy, yy | Início do ano |
| quarter, qq, q | Início do trimestre |
| month, mm, m | Início do mês |
| day, dd, d | Início do dia |
| week, wk, ww | Início da semana |
| hour, hh | Início da hora |
| minute, mi, n | Início do minuto |
| second, ss, s | Início do segundo |
| millisecond, ms | Iní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);ComDATETRUNC, 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!