SQL Server Convert Date: Como Alterar e Formatar Data com Facilidade
A manipulação de datas é uma das tarefas mais comuns ao trabalhar com bancos de dados. No SQL Server, a conversão e formatação de datas desempenham um papel fundamental para garantir a integridade dos dados, facilitar análises e criar relatórios consistentes. Se você já se deparou com a necessidade de alterar o formato de uma data, converter tipos de dados ou extrair partes específicas de uma data, este artigo será seu guia completo.
Quando se trata de trabalhar com datas no SQL Server, a função mais utilizada é a CONVERT(). Ela permite transformar tipos de dados de data em diferentes formatos de string e vice-versa, oferecendo grande flexibilidade para atender às suas necessidades. Além disso, há outras funções complementares que tornam a manipulação de datas ainda mais eficiente.

Ao longo deste artigo, vamos explorar como utilizar o CONVERT(), além de outras funções úteis, exemplos práticos, dúvidas frequentes e dicas essenciais para otimizar seu trabalho com datas no SQL Server.
O que é a função CONVERT() no SQL Server?
A função CONVERT() no SQL Server serve para conversão de tipos de dados. Ela pode transformar um valor de data em uma string formatada, ou vice-versa, dependendo do que você precisa. Sua sintaxe básica é:
CONVERT(data_type [ (length) ], expression [, style])- data_type: o tipo de dado para o qual você deseja converter.
- expression: o valor que será convertido.
- style: um parâmetro opcional que define o formato da data ou hora.
Uso básico do CONVERT()
Um exemplo simples para converter uma data em uma string no formato padrão:
SELECT CONVERT(VARCHAR, GETDATE())Este comando retornará a data atual no formato padrão YYYY-MM-DD HH:MI:SS.
Como converter datas no SQL Server
Converter data para string com diferentes formatos
A função CONVERT() permite formatar datas usando o parâmetro style, que corresponde a diferentes códigos de estilo predefinidos. Veja uma tabela com alguns exemplos comuns:
| Código Style | Descrição | Exemplo de formato | Resultado |
|---|---|---|---|
| 101 | mm/dd/yyyy | 12/31/2023 | 12/31/2023 |
| 103 | dd/mm/yyyy | 31/12/2023 | 31/12/2023 |
| 120 | yyyy-mm-dd hh:mi:ss (ISO 8601) | 2023-12-31 15:30:45 | 2023-12-31 15:30:45 |
| 112 | yyyymmdd | 20231231 | 20231231 |
Exemplo de uso:
SELECT CONVERT(VARCHAR(10), GETDATE(), 103) AS DataFormatada;Este comando retorna a data atual no formato dd/mm/yyyy.
Converter string para data
Para transformar uma string em um tipo de dado DATE, podemos usar:
SELECT CONVERT(DATE, '31/12/2023', 103);Neste exemplo, a string '31/12/2023' é convertida para o tipo DATE.
Como alterar o formato de data usando funções adicionais
Embora CONVERT() seja poderoso para formatação, em alguns casos você precisa de funções adicionais ou combinações para obter o formato desejado.
Função FORMAT()
A partir do SQL Server 2012, a função FORMAT() oferece uma maneira mais intuitiva de formatar datas:
SELECT FORMAT(GETDATE(), 'dd/MM/yyyy') AS DataFormatada;Diferente do CONVERT(), o FORMAT() aceita padrões de formatação semelhantes ao .NET e é bastante flexível.
Diferenças entre CONVERT() e FORMAT()
| Característica | CONVERT() | FORMAT() |
|---|---|---|
| Disponibilidade | Desde o SQL Server 2008 | Desde o SQL Server 2012 |
| Flexibilidade | Limitada aos estilos predefinidos | Alta, aceita padrões de formatação personalizados |
| Desempenho | Mais rápido, ideal para grandes volumes | Pode ser mais lento devido à formatação complexa |
Como extrair partes específicas de uma data
Além de converter datas, muitas vezes você precisa extrair partes específicas, como o dia, mês ou ano.
Funções úteis para extração
| Função | Descrição | Exemplo |
|---|---|---|
| YEAR() | Extrai o ano | SELECT YEAR(GETDATE()) |
| MONTH() | Extrai o mês | SELECT MONTH(GETDATE()) |
| DAY() | Extrai o dia | SELECT DAY(GETDATE()) |
| DATEPART() | Extrai uma parte específica da data | SELECT DATEPART(dw, GETDATE()) |
Exemplo prático com DATEPART():
SELECT DATEPART(year, GETDATE()) AS Ano, DATEPART(month, GETDATE()) AS Mes, DATEPART(day, GETDATE()) AS Dia;Como fazer a conversão de DateTime para apenas Date
Em algumas situações, o objetivo é eliminar a informação de hora, deixando apenas a data.
Métodos para obter apenas a data
- Usando
CAST()ouCONVERT():
SELECT CAST(GETDATE() AS DATE) AS ApenasData;-- ouSELECT CONVERT(DATE, GETDATE()) AS ApenasData;- Eliminando a hora ao usar
CONVERT()com estilo 23:
SELECT CONVERT(VARCHAR(10), GETDATE(), 23) AS DataSemHora;Dicas para otimizar seu uso do Convert Date no SQL Server
- Prefira usar
CAST()ouCONVERT()quando precisar de conversões rápidas de tipos de dados. - Utilize
FORMAT()para formatações customizadas, especialmente ao gerar relatórios ou relatórios HTML. - Use a tabela de estilos para centralizar sua padronização de formatos de data.
- Quando possível, armazene datas em tipos de dado
DATE,DATETIMEouDATETIME2, evitando conversões desnecessárias. - Sempre teste suas consultas para garantir que as conversões estejam corretas, especialmente ao lidar com diferentes padrões regionais.
Tabela resumo de funções de manipulação de datas
| Função | Propósito | Exemplo |
|---|---|---|
CONVERT() | Convertendo entre tipos de dados e formatos | CONVERT(VARCHAR(10), GETDATE(), 103) |
CAST() | Mudança de tipo de dados | CAST(GETDATE() AS DATE) |
FORMAT() | Formatação de saída com padrões personalizados | FORMAT(GETDATE(), 'dd/MM/yyyy') |
YEAR(), MONTH(), DAY() | Extração de partes específicas da data | YEAR(GETDATE()) |
DATEPART() | Extração de uma porção específica da data | DATEPART(hour, GETDATE()) |
Perguntas Frequentes
1. Qual a diferença entre CONVERT() e CAST() no SQL Server?
Resposta: CAST() é uma função padrão para converter tipos de dados de forma simples, enquanto CONVERT() oferece mais opções de formatação, especialmente para datas e horas, com o uso do parâmetro style.
2. Como converter uma data com formato brasileiro (dd/mm/yyyy) para o padrão ISO (yyyy-mm-dd)?
Resposta: Você pode usar CONVERT() com o estilo 103 para converter a string para o formato datetime, ou diretamente manipular a string. Exemplo:
SELECT CONVERT(DATETIME, '31/12/2023', 103);3. É possível alterar o formato exibido de uma coluna de data em uma consulta?
Resposta: Sim, usando funções como FORMAT(), por exemplo:
SELECT FORMAT(DataColuna, 'dd/MM/yyyy') AS DataFormatadaFROM SuaTabela;4. Como obter a data atual apenas no formato yyyy-MM-dd?
Resposta:
SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS DataISO;Conclusão
A manipulação correta de datas no SQL Server é essencial para garantir operações precisas de consulta, relatório e armazenamento de informações. A função CONVERT() é uma ferramenta indispensável, oferecendo versatilidade na conversão e formatação de datas. Compreender suas opções de style e combinar com outras funções como FORMAT(), YEAR(), MONTH(), e DAY() permite criar consultas altamente customizadas.
Lembre-se sempre de armazenar suas datas nos tipos de dados mais adequados para evitar sobrecarga de conversões desnecessárias e otimizar o desempenho do banco de dados. Além disso, familiarizar-se com as funcionalidades nativas do SQL Server garante maior eficiência no desenvolvimento de suas consultas e relatórios.
Se desejar aprofundar seus conhecimentos, visite Documentação Oficial do SQL Server e consulte também Guia de funções de data e hora do SQL Server.
Referências
- Microsoft Docs. Funções de conversão no SQL Server. Disponível em: https://docs.microsoft.com/pt-br/sql/t-sql/functions/cast-and-convert-transact-sql
- SQL Server Date and Time Functions. Disponível em: https://docs.microsoft.com/pt-br/sql/t-sql/functions/date-and-time-data-types-and-functions-transact-sql
- Dicas para trabalhar com datas no SQL Server. Online cursos e tutoriais.
Autor: Seu Nome
Data: Outubro de 2023
MDBF