MDBF Logo MDBF

Convert Date no SQL Server: Guia Completo para Datas

Artigos

No universo do gerenciamento de bancos de dados, manipular datas é uma das tarefas mais frequentes e essenciais. O SQL Server oferece diversas funções para converter, formatar e manipular tipos de dados relacionados a datas. Entre essas, o comando CONVERT destaca-se por sua flexibilidade e poder na hora de transformar valores de datas em diferentes formatos e tipos de dados.

Seja para exibir datas no formato desejado, realizar comparações, ou extrair partes específicas de uma data, entender como funciona o CONVERT no SQL Server é fundamental para desenvolvedores, analistas e DBAs.

convert-date-sql-server

Este guia completo abordará tudo o que você precisa saber sobre o comando CONVERT DATE no SQL Server, incluindo exemplos práticos, dicas de uso e boas práticas para otimizar suas consultas envolvendo datas.

O que é o comando CONVERT no SQL Server?

O CONVERT é uma função do SQL Server que permite a conversão de um tipo de dado em outro, especialmente voltado para conversões envolvendo datas e horas. Sua sintaxe básica é:

CONVERT (tipo_de_dado_destino, expressão [, estilo])
  • tipo_de_dado_destino: o tipo de dado para o qual você deseja converter a expressão, por exemplo, DATE, DATETIME, VARCHAR, etc.
  • expressão: o valor ou coluna a ser convertida.
  • estilo (opcional): um número que indica o formato do resultado, especialmente útil na conversão de datas em textos com formatos específicos.

Como funciona a conversão de datas com CONVERT

Conversão para DATE

A conversão de uma expressão para o tipo DATE normalmente envolve extrair a data sem a hora. Por exemplo:

SELECT CONVERT(DATE, GETDATE());

Este comando retorna a data atual, sem a parte de hora, como 2024-04-27.

Personalização do formato com o parâmetro estilo

O parâmetro estilo é um aspecto importante ao lidar com conversões de datas para textos. Ele define o formato de exibição da data e hora.

Por exemplo:

SELECT CONVERT(VARCHAR(10), GETDATE(), 101);

Retorna a data no formato mm/dd/yyyy.

Para entender melhor, veja uma tabela com exemplos de estilos mais utilizados.

Tabela de estilos comuns de conversão de datas

EstiloDescriçãoExemplo de saídaUse com
101mm/dd/yyyy04/27/2024Formatando datas para clientes nos EUA
103dd/mm/yyyy27/04/2024Formato brasileiro comum
112yyyymmdd20240427formato compacto ISO
120yyyy-mm-dd hh:mi:ss2024-04-27 14:31:00formato padrão SQL Server
23dd/mm/yyyy (ISO)27/04/2024leitura fácil para brasileiros

Fonte: Documentação oficial do Microsoft.

Como converter diferentes tipos de dados de data no SQL Server

Converter VARCHAR para DATE

Se você possui uma string representando uma data, pode convertê-la para o tipo DATE assim:

SELECT CONVERT(DATE, '27/04/2024', 103);

Neste exemplo, o estilo 103 é usado para indicar o formato brasileiro dd/mm/yyyy.

Converter DATETIME para DATE

Para extrair apenas a data de um campo do tipo DATETIME ou DATETIME2:

SELECT CONVERT(DATE, GETDATE());

Converter TIMESTAMP para VARCHAR

Se desejar exibir uma data em formato de texto:

SELECT CONVERT(VARCHAR(20), GETDATE(), 120);

Comparar datas usando CONVERT

Para filtrar registros com base em uma data específica:

SELECT * FROM VendasWHERE CONVERT(DATE, DataVenda) = '2024-04-27';

Casos de uso comuns do CONVERT com datas

Formatar data para relatório de exportação

Muitas empresas exportam dados em formatos específicos, e o CONVERT é fundamental para garantir a compatibilidade.

Extração de partes da data

Embora o CONVERT seja útil, para extrair partes específicas de uma data, funções como YEAR(), MONTH() e DAY() são mais indicadas.

Ordenação de registros por data

Ordenar por uma coluna de data garantirá resultados precisos, especialmente quando as datas estão em formatos string. Converter antes da ordenação evita erros.

Dicas rápidas para usar CONVERT de forma eficiente

  • Use estilos padrão para evitar ambiguidades de formato.
  • Prefira armazenar datas em tipos nativos (DATE, DATETIME) para maior precisão.
  • Evite usar conversões desnecessárias em grandes volumes de dados, pois podem impactar a performance.
  • Utilize funções auxiliares como FORMAT() (a partir do SQL Server 2012) para formatações avançadas, porém com cautela, devido à performance.

Perguntas Frequentes (FAQs)

1. Qual a diferença entre CAST e CONVERT no SQL Server?

O CAST é uma função padrão do SQL para conversões, enquanto o CONVERT oferece recursos adicionais, como o parâmetro de estilo para formatar datas de maneiras específicas.

-- CASTSELECT CAST(GETDATE() AS VARCHAR(20));-- CONVERTSELECT CONVERT(VARCHAR(20), GETDATE(), 120);

2. Como converter uma coluna de string com formato brasileiro para o tipo DATE?

SELECT CONVERT(DATE, sua_coluna, 103);

3. É possível converter uma data para o formato ISO 8601?

Sim, usando o estilo 126:

SELECT CONVERT(VARCHAR(50), GETDATE(), 126);

4. Como extrair o ano de uma data usando CONVERT?

Embora o CONVERT não extraia partes específicas da data, funções como YEAR() são indicadas:

SELECT YEAR(Data);

5. Quais os melhores estilos para datas no Brasil?

Para o formato brasileiro, o estilo 103 é o mais utilizado:

SELECT CONVERT(VARCHAR(10), GETDATE(), 103);

Conclusão

O comando CONVERT no SQL Server é uma ferramenta poderosa para manipulação de datas, oferecendo diversas opções de formatação e conversão. Dominar suas possibilidades garante maior precisão e flexibilidade ao trabalhar com bancos de dados, facilitando tarefas como geração de relatórios, exportação de dados e manipulação de registros históricos.

Lembre-se de evitar conversões desnecessárias em consultas de alta performance e sempre optar por tipos nativos de data ao armazenar informações temporais. Assim, seu banco de dados ficará mais eficiente e confiável.

Se desejar aprofundar seus conhecimentos, consulte a documentação oficial do Microsoft ou explore ferramentas complementares que auxiliam na formatação e manipulação de datas.

Referências

Este artigo foi criado para fornecer um entendimento completo e atualizado sobre o comando CONVERT DATE no SQL Server, otimizando suas consultas e operações com datas.