Como transformar uma data armazenada como texto (VARCHAR) em tipo DATE no SQL?

Transformar uma data armazenada como texto (VARCHAR) em um tipo DATE no SQL pode ser necessário para realizar comparações ou operações de data. Descubra como fazer isso corretamente.

Como transformar uma data armazenada como texto (VARCHAR) em tipo DATE no SQL?

Em muitos casos, as datas são armazenadas no banco de dados como VARCHAR, especialmente quando os dados são importados ou manipulados sem a devida formatação. Para realizar operações com essas datas ou fazer comparações, você precisa convertê-las para o tipo de dado DATE. Vamos explorar como realizar essa conversão e garantir que as datas sejam tratadas de forma eficiente no SQL.

1. Usando a função CAST()

Uma maneira simples e direta de transformar uma data armazenada como VARCHAR em um tipo DATE é utilizando a função CAST(). Essa função permite converter valores de um tipo de dado para outro, incluindo a conversão de VARCHAR para DATE.

Exemplo de uso do CAST()

SELECT CAST('2023-10-12' AS DATE) AS data_convertida;

Neste exemplo, a string '2023-10-12' (que é do tipo VARCHAR) é convertida para o tipo DATE. O resultado da consulta será 2023-10-12, agora como um tipo de dado DATE, permitindo que você execute operações de data, como comparações e cálculos.

2. Usando a função STR_TO_DATE() no MySQL

No MySQL, a função STR_TO_DATE() é uma maneira útil de transformar uma data armazenada como texto em um tipo DATE. Você pode especificar o formato da data que está armazenada como texto, garantindo que o SQL interprete corretamente a string e a converta no formato DATE.

Exemplo de uso do STR_TO_DATE()

SELECT STR_TO_DATE('12-10-2023', '%d-%m-%Y') AS data_convertida;

Aqui, a função STR_TO_DATE() converte a string '12-10-2023' no formato '%d-%m-%Y' para o tipo DATE. O resultado será a data 2023-10-12, corretamente convertida para o tipo DATE.

3. Usando a função CONVERT() no SQL Server

Se você está utilizando o SQL Server, pode usar a função CONVERT() para transformar uma data armazenada como texto em tipo DATE. A função CONVERT() é versátil e permite especificar o formato de data desejado.

Exemplo de uso do CONVERT()

SELECT CONVERT(DATE, '2023-10-12', 120) AS data_convertida;

Neste exemplo, a função CONVERT() converte a string '2023-10-12' para o tipo DATE no formato padrão YYYY-MM-DD.

4. Lidando com formatos de data diferentes

Se você tiver datas armazenadas em diferentes formatos, como DD-MM-YYYY ou MM-DD-YYYY, pode precisar ajustar o formato para garantir que a conversão ocorra corretamente. O SQL permite que você defina o formato da data ao usar funções como STR_TO_DATE() no MySQL, ou a função CONVERT() no SQL Server.

Exemplo de manipulação de formatos no MySQL

SELECT STR_TO_DATE('10/12/2023', '%m/%d/%Y') AS data_convertida;

Aqui, estamos convertendo a data 10/12/2023 (no formato MM/DD/YYYY) para o tipo DATE. A função interpreta corretamente o formato fornecido e retorna a data no formato YYYY-MM-DD.

5. Tratando datas inválidas

Ao realizar a conversão de VARCHAR para DATE, você pode se deparar com datas inválidas ou mal formatadas. Para evitar erros, é importante validar a entrada antes de tentar a conversão. Caso a string não tenha o formato adequado, a conversão pode falhar ou resultar em valores NULL.

Exemplo de validação de dados antes da conversão

SELECT CASE
    WHEN '2023-10-12' REGEXP '^[0-9]{4}-[0-9]{2}-[0-9]{2}$' THEN CAST('2023-10-12' AS DATE)
    ELSE NULL
END AS data_convertida;

Neste exemplo, usamos uma expressão regular para validar o formato da string antes de tentar convertê-la para o tipo DATE. Se a string não corresponder ao formato de data YYYY-MM-DD, a conversão retornará NULL.

6. Quando usar a conversão de VARCHAR para DATE?

A conversão de VARCHAR para DATE deve ser feita sempre que você precisar manipular ou comparar dados de data que foram armazenados como texto. Isso é comum em situações como:

  • Importação de dados de arquivos CSV ou outras fontes externas, onde as datas podem estar armazenadas como texto
  • Processamento de dados onde a entrada do usuário foi armazenada como VARCHAR e você precisa realizar cálculos de data ou comparações

7. Conclusão

Converter uma data armazenada como VARCHAR para o tipo DATE no SQL é uma prática comum quando se lida com dados importados ou mal formatados. As funções CAST(), STR_TO_DATE() e CONVERT() são ótimas ferramentas para realizar essa conversão de maneira eficiente. Certifique-se de validar os dados antes de realizar a conversão para evitar erros e garantir que as operações de data funcionem corretamente.

A conversão de datas armazenadas como VARCHAR para o tipo DATE é uma tarefa fundamental ao lidar com dados em sistemas de banco de dados. Embora o VARCHAR possa ser útil para armazenar dados temporários ou mal formatados, converter esses dados para o tipo DATE permite que você aproveite as funções e operações nativas do SQL para trabalhar com datas de maneira eficiente. As funções CAST(), STR_TO_DATE() e CONVERT() oferecem soluções flexíveis para essa conversão, e sempre é importante garantir que os dados estejam no formato correto antes de tentar convertê-los.

Algumas aplicações:

  • Importação de dados de sistemas legados onde as datas são armazenadas como texto
  • Processamento de entradas de usuário onde a data é fornecida como string e precisa ser convertida para DATE
  • Consultas em sistemas de análise de dados que lidam com formatos de data inconsistentes
  • Normalização de dados em projetos de migração de dados, onde as datas precisam ser padronizadas

Dicas para quem está começando

  • Verifique o formato das datas em VARCHAR antes de tentar convertê-las para DATE
  • Use CAST(), STR_TO_DATE() ou CONVERT() dependendo do seu SGBD para realizar a conversão corretamente
  • Se possível, armazene as datas já no formato DATE para evitar a necessidade de conversão
  • Evite usar VARCHAR para datas se for possível, pois o tipo DATE é mais eficiente para realizar operações de data
  • Faça sempre uma validação ou limpeza dos dados antes de tentar realizar conversões para garantir que o processo seja bem-sucedido

Contribuições de Andressa Maria

Compartilhe este tutorial: Como transformar uma data armazenada como texto (VARCHAR) em um tipo DATE no SQL?

Compartilhe este tutorial

Continue aprendendo:

Como converter um VARCHAR para INT no SQL?

Saiba como fazer a conversão de uma coluna ou valor de tipo VARCHAR para INT no SQL, com explicações claras e exemplos práticos.

Tutorial anterior

Como forçar um número decimal a ter um número fixo de casas decimais no SQL?

Descubra como forçar números decimais a sempre ter o mesmo número de casas decimais no SQL, garantindo consistência nos dados.

Próximo tutorial