MDBF Logo MDBF

SQL Server Convert Date: Como Alterar e Formatar Data com Facilidade

Artigos

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.

sql-server-convert-date

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 StyleDescriçãoExemplo de formatoResultado
101mm/dd/yyyy12/31/202312/31/2023
103dd/mm/yyyy31/12/202331/12/2023
120yyyy-mm-dd hh:mi:ss (ISO 8601)2023-12-31 15:30:452023-12-31 15:30:45
112yyyymmdd2023123120231231

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ísticaCONVERT()FORMAT()
DisponibilidadeDesde o SQL Server 2008Desde o SQL Server 2012
FlexibilidadeLimitada aos estilos predefinidosAlta, aceita padrões de formatação personalizados
DesempenhoMais rápido, ideal para grandes volumesPode 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çãoDescriçãoExemplo
YEAR()Extrai o anoSELECT YEAR(GETDATE())
MONTH()Extrai o mêsSELECT MONTH(GETDATE())
DAY()Extrai o diaSELECT DAY(GETDATE())
DATEPART()Extrai uma parte específica da dataSELECT 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

  1. Usando CAST() ou CONVERT():
SELECT CAST(GETDATE() AS DATE) AS ApenasData;-- ouSELECT CONVERT(DATE, GETDATE()) AS ApenasData;
  1. 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() ou CONVERT() 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, DATETIME ou DATETIME2, 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çãoPropósitoExemplo
CONVERT()Convertendo entre tipos de dados e formatosCONVERT(VARCHAR(10), GETDATE(), 103)
CAST()Mudança de tipo de dadosCAST(GETDATE() AS DATE)
FORMAT()Formatação de saída com padrões personalizadosFORMAT(GETDATE(), 'dd/MM/yyyy')
YEAR(), MONTH(), DAY()Extração de partes específicas da dataYEAR(GETDATE())
DATEPART()Extração de uma porção específica da dataDATEPART(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

Autor: Seu Nome
Data: Outubro de 2023