1
resposta

CONVERTER UM TEXTO EM DATA

Boa noite, pessoal! Sou iniciante em SQL e estou com uma dúvida...

Na empresa em que trabalho tem uma base de dados, onde um dos campos de data foi criado com tipo de dado varchar. Isso me gerou problemas na hora de fazer um filtro pela data. (OBS: Não tenho acesso para alterar o tipo de dado nas colunas da tabela)

Quando cheguei em casa, resolvi criar uma tabela para tentar resolver esse problema e poder usar no dia a dia do trabalho.

Criei a tabela TESTE onde o campo DATA_CONSULTA armazena datas. Criei o campo como varchar igual no trabalho armazenando datas assim 'ddmmyyyy'.

A solução que encontrei para converter esse dado em date foi essa:

DROP TABLE IF EXISTS #TESTE1

SELECT CODIGO, PRODUTO, DATA_CONSULTA, CONVERT(DATE,(SUBSTRING(DATA_CONSULTA,1,2)+ '-'+ SUBSTRING(DATA_CONSULTA,3,2)+ '-'+ SUBSTRING(DATA_CONSULTA,5,4)),105) AS DATACONSULTA INTO #TESTE1 FROM [TESTE]

SELECT * FROM #TESTE1 WHERE YEAR(DATACONSULTA) <= 2021

  1. Fazer substrings na coluna DATA_CONSULTA e ir juntando os caracteres dd + mm + yyyy, dando o nome DATACONSULTA
  2. Fazer um CONVERT no resultado dessas substrings usando o código 105 de saída yyyy-mm-dd que é a que preciso.
  3. Fazer uma tabela temporária #TESTE1 para poder armazenar o resultado desse novo campo DATACONSULTA que criei no meu Select, para então poder fazer um Select filtrando as datas... Daí consegui chegar no resultado que gostaria!

A dúvida é: Tem algum jeito mais fácil pra resolver isso?

Acho que acabei fazendo uma gambiarra, que resolveu mas me deu um pouquinho de trabalho kkkkk

1 resposta

Lucas, tem sim!

CONVERT(DATE, '19/03/2021', 103)

Onde 103 é o tipo de conversão, para este formato (pesquisa sobre uma lista deles).

Testa e qualquer coisa me marca solucionado.

Valeu!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software