Bobrinha 4 Denunciar post Postado Julho 28, 2015 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
Motta 645 Denunciar post Postado Julho 28, 2015 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
lokaodomau 61 Denunciar post Postado Julho 28, 2015 A função STR_TO_DATE() vai te ajudar. Por exemplo, o comando STR_TO_DATE("28/07/2015", "%d/%m/%Y") irá converter a data de "28/07/2015" para 2015-07-28. Compartilhar este post Link para o post Compartilhar em outros sites
Bobrinha 4 Denunciar post Postado Julho 29, 2015 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
Motta 645 Denunciar post Postado Julho 29, 2015 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
lokaodomau 61 Denunciar post Postado Julho 29, 2015 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 645 Denunciar post Postado Julho 30, 2015 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
lokaodomau 61 Denunciar post Postado Julho 30, 2015 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
Bobrinha 4 Denunciar post Postado Julho 30, 2015 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