MDBF Logo MDBF

Convert Date SQL: Guia Completo para Converter Data no SQL

Artigos

No universo do banco de dados relacional, trabalhar com datas é uma tarefa corriqueira e muitas vezes desafiadora. O uso de funções para converter e manipular datas no SQL é fundamental para garantir a integridade dos dados, facilitar consultas e otimizar processos.

Seja ao formatar uma data para exibição, ao fazer cálculos de intervalo ou ao realizar comparações específicas, o conhecimento sobre como converter datas no SQL é indispensável para desenvolvedores, analistas e administradores de banco de dados.

convert-date-sql

Neste guia completo, abordaremos as principais técnicas, funções e boas práticas para converter datas no SQL, além de responder às dúvidas mais frequentes e sugerir recursos externos relevantes.

Por que Converter Data no SQL?

Converter datas no SQL é necessário por várias razões, incluindo:

  • Padronização de formatos: para exibir datas em formatos específicos, como DD/MM/YYYY ou MM-DD-YYYY.
  • Manipulação de datas: calcular diferenças, adicionar ou subtrair dias, meses ou anos.
  • Compatibilidade: integrar dados de diferentes fontes ou bancos de dados que usam formatos distintos.
  • Filtragens avançadas: realizar consultas com base em partes específicas da data, como o mês ou o dia.

Principais Funções para Converter Data no SQL

Existem diversas funções dependendo do sistema gerenciador de banco de dados (SGBD) utilizado, como MySQL, SQL Server, PostgreSQL, entre outros. A seguir, abordaremos as funções mais comuns.

1. SQL Server

FunçãoDescriçãoExemplo
CONVERT()Converte uma expressão de um tipo de dado para outro, incluindo datasCONVERT(VARCHAR, GETDATE(), 103) (formato DD/MM/YYYY)
FORMAT()Formata uma data de acordo com o padrão especificadoFORMAT(GETDATE(), 'dd/MM/yyyy')

Exemplos de conversão no SQL Server

-- Converter a data atual para o formato DD-MM-YYYYSELECT CONVERT(VARCHAR, GETDATE(), 105) AS DataFormatada;-- Formatar a data para exibição personalizadaSELECT FORMAT(GETDATE(), 'dd/MM/yyyy') AS DataPersonalizada;

2. MySQL

FunçãoDescriçãoExemplo
DATE_FORMAT()Formata uma data de acordo com o padrão desejadoDATE_FORMAT(NOW(), '%d/%m/%Y')
STR_TO_DATE()Converte uma string para data, usando um formato especificadoSTR_TO_DATE('01-12-2023', '%d-%m-%Y')

Exemplos de conversão no MySQL

-- Formatando a data atual para o padrão dia/mês/anoSELECT DATE_FORMAT(CURDATE(), '%d/%m/%Y') AS DataFormatada;-- Convertendo uma string para dataSELECT STR_TO_DATE('25/12/2023', '%d/%m/%Y') AS DataConvertida;

3. PostgreSQL

FunçãoDescriçãoExemplo
TO_CHAR()Converte uma data para string com um formato específicoTO_CHAR(CURRENT_DATE, 'DD/MM/YYYY')
TO_DATE()Converte uma string para data, seguindo o formato dadoTO_DATE('01-12-2023', 'DD-MM-YYYY')

Exemplos de conversão no PostgreSQL

-- Formatar a data atualSELECT TO_CHAR(CURRENT_DATE, 'DD/MM/YYYY') AS DataFormatada;-- Converter string para dataSELECT TO_DATE('15-11-2023', 'DD-MM-YYYY') AS DataConvertida;

Como Converter Datas com Exemplos Práticos

Converter String para Data

No cenário em que recebemos uma data como string e é necessário convertê-la para o tipo de dado DATE, usamos funções específicas:

SistemaFunçãoExemplo
MySQLSTR_TO_DATE()STR_TO_DATE('31/12/2023', '%d/%m/%Y')
SQL ServerCONVERT()CONVERT(DATE, '2023-12-31')
PostgreSQLTO_DATE()TO_DATE('31-12-2023', 'DD-MM-YYYY')

Exemplo de conversão de data para outro formato

Para formatar uma data de forma personalizada para exibir em relatórios ou interfaces, usamos:

-- MySQLSELECT DATE_FORMAT(NOW(), '%d-%m-%Y') AS DataPersonalizada;-- SQL ServerSELECT FORMAT(GETDATE(), 'dd-MM-yyyy') AS DataPersonalizada;-- PostgreSQLSELECT TO_CHAR(CURRENT_DATE, 'DD-MM-YYYY') AS DataPersonalizada;

Adicionando ou Subtraindo Dias

Muitas vezes, é necessário calcular uma nova data baseando-se na data atual ou uma data específica. Confira exemplos:

SistemaFunçãoExemplo
MySQLDATE_ADD(), DATE_SUB()DATE_ADD(CURDATE(), INTERVAL 7 DAY)
SQL ServerDATEADD()DATEADD(day, 7, GETDATE())
PostgreSQLINTERVALCURRENT_DATE + INTERVAL '7 days'

Boas Práticas ao Trabalhar com Datas no SQL

  • Sempre utilize funções específicas do seu SGBD para garantir compatibilidade.
  • Evite armazenar datas como strings. Prefira tipos de dados DATE, DATETIME ou TIMESTAMP.
  • Use funções de formatação apenas na apresentação, deixando os dados internos em formato padrão.
  • Documente o formato esperado ao importar ou exportar datas de fontes externas.

Perguntas Frequentes sobre Conveter Datas no SQL

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

CONVERT() oferece maior controle sobre o formato de saída ao permitir especificar estilos de conversão. Já CAST() realiza uma conversão básica entre tipos de dados. Por exemplo:

SELECT CAST(GETDATE() AS VARCHAR);SELECT CONVERT(VARCHAR, GETDATE(), 103); -- Formato DD/MM/YYYY

2. Como converter uma data para o padrão ISO 8601 no SQL?

No SQL Server e PostgreSQL, é possível usar:

-- SQL ServerSELECT CONVERT(VARCHAR, GETDATE(), 126);-- PostgreSQLSELECT TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD"T"HH24:MI:SS');

3. É possível trabalhar com fusos horários ao converter datas no SQL?

Sim, mas depende do SGBD. Por exemplo, PostgreSQL possui funções específicas como AT TIME ZONE. No SQL Server, há suporte parcial com SWITCHOFFSET().

Conclusão

Converter datas no SQL é uma tarefa essencial para garantir a correta manipulação, exibição e análise de dados temporais. Compreender as funções disponíveis nas diferentes plataformas e suas aplicações práticas permite otimizar consultas, relatórios e integrações.

Lembre-se de sempre escolher o formato de armazenamento adequado, evitar o uso de strings para datas e realizar conversões apenas na camada de apresentação ou relatórios, visando boas práticas e eficiência.

Para aprofundar seus conhecimentos, consulte a documentação oficial do seu SGBD:

Referências

  • https://learn.microsoft.com/en-us/sql/t-sql/functions/convert-transact-sql
  • https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
  • https://www.postgresql.org/docs/current/functions-formatting.html
  • Como manipular e formatar datas em SQL

“Entender como converter e manipular datas no SQL é fundamental para garantir a integridade e a eficiência na gestão de dados temporais.”