Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bobrinha

É possível reordenar dados de uma coluna? ex 00/00/0000 para 0000/00/0

Recommended Posts

Olá colegas, gostaria saber se é possível e como reordenar dados de uma coluna, tenho uma coluna que guarda a data de nascimento porém, ela foi criada no formato varchar salvando as datas 00/00/0000 porém o correto é tornar a coluna no formato date ou criar outra coluna e copiar os dados em fim, como fazer com comandos sql se possível ficar no formato certo 0000/00/00

 

Tentei mudar a coluna de varchar para date porém ao fazer isso zera todas as datas e fica no formato 0000/00/00, porém não quero perder os dados ja existentes :mellow:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma nova coluna de tipo date.

Faça um update de cada linha convertendo o tipo da coluna a ser corrigida para date.

Drope esta coluna original

Renomeie a nova coluna para o nome da coluna original

 

Refeva as aplicações que fazem referência a esta tabela/coluna

 

Antes faça um backup desta tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta pensei nisso porém não sei como fazer isso

 

Faça um update de cada linha convertendo o tipo da coluna a ser corrigida para date.

 

lokaodomau eu tentei de diversas formas usar a função que vc indicou porem não sei se é possivel fazer o que eu desejo pois ja existem dados nas colunas ao fazer

 

UPDATE tabela SET data = STR_TO_DATE("28/07/2015", "%d/%m/%Y")

 

ele converte a data para o formato correto porem ele joga a nova informada, o certo era pegar a data que ja esta nas colunas ou seja so reordenar e trocar a / por -

 

Estou perdido com isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok , posso errar a síntaxe , mas seria algo assim

 

Crie uma nova coluna de tipo date.

ALTER TABLE TABELA ADD NOVADATA DATE;

Faça um update de cada linha convertendo o tipo da coluna a ser corrigida para date.

UPDATE tabela SET novadata = STR_TO_DATE(data, "%d/%m/%Y")

Drope esta coluna original

ALTER TABLE TABELA DROP COLUMN DATA

Renomeie a nova coluna para o nome da coluna original

ALTER TABLE TABELA RENAME COLUMN NOVADATA AS DATA

Check a síntaxe na documentação ou manual para se certificar

 

e lembre

 

FAÇA UMA SALVA ANTES DE FAZER ESTA BAGAÇA !! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas esta síntaxe altera o nome e tipo ?

E a conversão char >> date ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, não ficou claro, quis apenas adiantar a solução.

 

Se executar somente o que está no post #6, será um problema.

 

O correto seria isso:

 

ok , posso errar a síntaxe , mas seria algo assim

 

Crie uma nova coluna de tipo date.

ALTER TABLE TABELA ADD NOVADATA DATE;

Faça um update de cada linha convertendo o tipo da coluna a ser corrigida para date.

UPDATE tabela SET novadata = STR_TO_DATE(data, "%d/%m/%Y")

Drope esta coluna original

ALTER TABLE TABELA DROP COLUMN DATA

Renomeie a nova coluna para o nome da coluna original

[...]

 

FAÇA UMA SALVA ANTES DE FAZER ESTA BAGAÇA !! :)

 

Com mais isso:

 

Somente a Sintaxe para renomear a coluna é diferente:

ALTER TABLE tabela CHANGE COLUMN novadata data DATE

Manual.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta obrigado vc é de mais cara, fiz o backup antes de fazer a bagaça sim kkkkkkkkkkkkkkkk

lokaodomau agradeço a ajuda mais não precisei chegar a essa parte por comandos, o que eu fiz foi

 

Como a minha tabela ja tinha a coluna data no formato varchar int 11 guardando os valores 00/00/0000 usei o comando indicado por vc e orientado pelo Motta

 

UPDATE tabela SET data = STR_TO_DATE(data, "%d/%m/%Y")

 

Depois simplesmente mudei a coluna de varchar para o formato correto date e tudo deu certo sem precisar criar uma nova coluna ou fazer algo mais

 

Obrigado aos dois

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.