MDBF Logo MDBF

Convert SQL Server Date: Guia Completo para Manipulação de Datas

Artigos

A manipulação de datas é uma das tarefas mais comuns e essenciais ao trabalhar com bancos de dados. No SQL Server, entender como converter, formatar e manipular datas é fundamental para garantir a integridade e a eficiência de suas consultas. Neste guia completo, vamos explorar as principais técnicas para conversão de datas no SQL Server, incluindo funções, exemplos práticos e dicas importantes para otimizar seu trabalho com datas.

Introdução

No desenvolvimento de aplicações e na análise de dados, a necessidade de transformar formatos de datas ou extrair informações específicas é constante. Desde a conversão de um valor string para um tipo de dado datetime até a formatação de datas para relatórios, entender as funções de conversão do SQL Server é essencial. Este artigo visa oferecer um panorama detalhado sobre o assunto, facilitando sua implementação no dia a dia.

convert-sql-server-date

Por que é importante converter datas no SQL Server?

A conversão de datas é importante por várias razões:

  • Integração de dados: combinar fontes de dados diferentes que usam formatos distintos.
  • Formatação para relatórios: adaptar o formato das datas para visualização e impressão.
  • Filtragem e ordenação: realizar consultas eficientes com base em datas específicas.
  • Armazenamento otimizado: garantir que os dados estejam em tipos apropriados para economia de espaço e desempenho.

Como afirmou Edsger Dijkstra, "A simplicidade é o último grau de sofisticação", especialmente ao manipular datas que podem parecer complexas.

Principais funções para converter datas no SQL Server

Existem várias funções que facilitam a conversão de datas no SQL Server. A seguir, listamos as mais utilizadas:

FunçãoDescriçãoExemplo de uso
CONVERT()Converte expressões de um tipo de dado para outro, incluindo formatos de datasCONVERT(datetime, '2023-10-01')
CAST()Similar ao CONVERT, converte tipos de dados de forma padrãoCAST('2023-10-01' AS datetime)
FORMAT()Formata valores de data/hora de acordo com uma cadeia de formataçãoFORMAT(GETDATE(), 'dd/MM/yyyy')
PARSE()Converte strings para tipos de data/hora usando globalizaçãoPARSE('01/10/2023' AS datetime, 'pt-BR')

Vamos explorar cada uma dessas funções com exemplos práticos.

Como converter datas no SQL Server: exemplos detalhados

1. Converter string para datetime com CONVERT()

A função CONVERT() é uma das mais utilizadas para transformar uma string que representa uma data em um tipo datetime ou date.

SELECT CONVERT(datetime, '2023-10-01');

Resultado:

ColunaValor
(No cabeçalho)2023-10-01 00:00:00.000

Formatos do CONVERT()

A função CONVERT() aceita um terceiro parâmetro chamado style, que define o formato de entrada e saída da data. Alguns exemplos de estilos comuns incluem:

StyleDescriçãoExemplo de uso
101mm/dd/yyyyCONVERT(varchar, GETDATE(), 101)
103dd/mm/yyyyCONVERT(varchar, GETDATE(), 103)
112yyyymmddCONVERT(varchar, GETDATE(), 112)

2. Converter usando CAST()

A função CAST() é uma alternativa mais simples, que converte um tipo de dado para outro.

SELECT CAST('2023-10-01' AS datetime);

Resultado:

ColunaValor
(No cabeçalho)2023-10-01 00:00:00.000

Quando usar: preferida quando não é necessário especificar formatos de saída.

3. Formatando datas com FORMAT()

A função FORMAT() permite exibir a data no formato desejado, facilitando a leitura e apresentação de dados.

SELECT FORMAT(GETDATE(), 'dd/MM/yyyy') AS DataFormatada;

Resultado:

DataFormatada
27/10/2023

Observação: a função FORMAT() é mais lenta em grandes volumes de dados devido à sua flexibilidade e uso de formatação personalizada.

4. Parsing de strings com PARSE()

Para converter de uma string de uma cultura específica para um tipo de data, utilize PARSE().

SELECT PARSE('01/10/2023' AS datetime USING 'pt-BR') AS DataConvertida;

Resultado:

DataConvertida
2023-10-01

Para entender mais sobre funções de data no SQL Server, consulte a documentação oficial da Microsoft.

Como formatar datas no SQL Server

Além de converter, a formatação de datas é essencial para exibir informações de maneira compreensível. O SQL Server oferece a função FORMAT() que permite personalizar a saída de acordo com suas necessidades.

Exemplos de formatação de datas

Formato PersonalizadoDescriçãoExemplo de Uso
dd/MM/yyyyDia/Mês/AnoFORMAT(GETDATE(), 'dd/MM/yyyy')
MMMM dd, yyyyNome do mês por extenso, dia e anoFORMAT(GETDATE(), 'MMMM dd, yyyy')
yyyy-MM-dd HH:mm:ssFormato padrão ISO 8601FORMAT(GETDATE(), 'yyyy-MM-dd HH:mm:ss')

"Uma data bem formatada é a ponte entre dados brutos e informações úteis." — Anônimo

Como realizar a conversão de datas em consultas complexas

Em cenários mais avançados, pode ser necessário combinar funções de conversão e formatação em consultas mais elaboradas, por exemplo, para calcular diferenças de datas ou agrupar por períodos.

Exemplo: calcular a diferença entre duas datas

SELECT    PedidoID,    DataPedido,    DataEntrega,    DATEDIFF(day, DataPedido, DataEntrega) AS DiasEntrePedidosFROM PedidosWHERE DataEntrega IS NOT NULL;

Exemplo: agrupar vendas por mês e ano

SELECT    YEAR(DataVenda) AS Ano,    MONTH(DataVenda) AS Mes,    SUM(ValorVenda) AS TotalVendasFROM VendasGROUP BY YEAR(DataVenda), MONTH(DataVenda)ORDER BY Ano, Mes;

Para mais detalhes e práticas recomendadas, acesse o Microsoft SQL Server Documentation.

Perguntas Frequentes

1. Como converter uma data de string no formato brasileiro (dd/MM/yyyy)?

Utilize a função PARSE() com a cultura 'pt-BR':

SELECT PARSE('31/12/2023' AS datetime) USING 'pt-BR';

2. Qual a diferença entre CAST() e CONVERT()?

CAST() é uma conversão padrão sem opções de formato específicas. Já CONVERT() permite especificar o formato através do parâmetro style, facilitando conversões de formatos de data diferentes.

3. Como converter uma data para o formato ISO 8601?

Use a função CONVERT() com o estilo 126:

SELECT CONVERT(varchar, GETDATE(), 126) AS ISO8601Date;

Resultado: 2023-10-27T14:23:45

4. É possível converter uma data para um timestamp Unix?

Sim, com cálculos adicionais:

SELECT DATEDIFF(second, '1970-01-01', GETDATE()) AS UnixTimestamp;

Conclusão

A manipulação de datas no SQL Server é uma habilidade fundamental para qualquer profissional de banco de dados ou desenvolvedor. Com as funções de conversão e formatação apresentadas neste artigo, você pode transformar, exibir e analisar dados temporais de forma eficiente, segura e personalizada.

Lembre-se de que, ao trabalhar com diferentes formatos de entrada e saída, entender o contextos culturais e regionais é importante para evitar erros e garantir a integridade dos dados. Além disso, a prática constante desacelera o processo de aprendizagem e fortalece sua expertise nessa área.

Referências

Seja qual for sua necessidade — seja para converter, formatar ou calcular datas — dominar essas funções irá aumentar a eficiência e a precisão do seu trabalho com bancos de dados SQL Server.