none
Update Convert RRS feed

  • Pergunta

  • Boa tarde Galera do forum,

    Hoje me deparei com uma situação,

    Ao importar uma tabela do excel o campo de data veio com o seguinte formato:

    1996-03-06 00:00:00.000

    a soluçao que eu achava que daria certo é essa

    UPDATE TABELA SET DATA = CONVERT(DATETIME,112)  PARA FICAR NO FORMATO AAAAMMDD

    porem sem sucesso fica com umas data nada a ver, a solução que achei foi dando um select na tabela

    converter esse campo e jogar em uma outra tabela, porem achei essa solução muito cafe com leite rsrs

    alguem sabe se é que tem como de fazer isso direto no update ?

    quarta-feira, 24 de outubro de 2012 16:49

Respostas

  • tente assim:

    UPDATE TABELA SET DATA = CONVERT(char(8),data,112) 


    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Sugerido como Resposta Eduardo Gomes Pereira quarta-feira, 24 de outubro de 2012 17:00
    • Marcado como Resposta Uelson.Jr quinta-feira, 25 de outubro de 2012 11:58
    quarta-feira, 24 de outubro de 2012 16:59

Todas as Respostas

  • tente assim:

    UPDATE TABELA SET DATA = CONVERT(char(8),data,112) 


    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Sugerido como Resposta Eduardo Gomes Pereira quarta-feira, 24 de outubro de 2012 17:00
    • Marcado como Resposta Uelson.Jr quinta-feira, 25 de outubro de 2012 11:58
    quarta-feira, 24 de outubro de 2012 16:59
  • Alexandre,

    Executei sua sugestao ele roda sem dar erro mais continua como antes 1996-03-06 00:00:00.000

    uma coisa que eu esqueçi de falar o campo esta como datetime mesmo.

    quarta-feira, 24 de outubro de 2012 17:06
  • Mas olha só, qual o problema de estar neste formato. Ao meu ver, está certo.

    Veja:

    Declare @Data DateTime
    
    Set @Data = '1996-03-06 00:00:00.000'
    
    Select @Data

    Não há qualquer problema em atribuir a data neste formato para um campo ou váriável que seja do tipo data.

    Você está tendo problemas ao gravar a data neste formato? Se sim, qual erro aparece pra você?

    Ou está querendo apenas resgatar a data na tabela num determinado formato?


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quarta-feira, 24 de outubro de 2012 17:08
    Moderador
  • Roberson, Entao eu preciso validar um arquivo com meu banco ai eu relaciono esse campo entre outros 

    so que na minha base esse campo de data esta no seguinte formato AAAAMMDD (NVARCHAR) e ele como tinha falado 1996-03-06 00:00:00.000 (datetime)

    quarta-feira, 24 de outubro de 2012 17:15
  • Uelson, se seu campo esta no formato datetime não ha update que deixará ele de outro formato, porem como o Roberson disse não ha problema em voce comparar como datetime o formato aaaammdd que é um formato reconhecido de todos os tipos de data.

    Alexandre Matayosi Conde Mauricio. Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quarta-feira, 24 de outubro de 2012 17:17
  • Uelson, mas você está tendo problemas ao atualizar a tabela a partir desta data?

    Ela também está no formato Ano/Mês/Dia, apesar de ter hora zerada.


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quarta-feira, 24 de outubro de 2012 17:18
    Moderador
  • Roberson eu faço assim:

    UPDATE ACAOJOVEM SET VALIDO = 'OK',DEPADMINISTRATIVA = NOMEDEP,DIRETORIAENSINO = DE,ACAOJOVEM.CDREDE = ESCOLA.CDREDE,CODESCOLA = ESCOLA.COD_ESC,
        NOMEESCOLA = NOMESC,ENDERECOESCOLA = ESCOLA.ENDESC,NUMERO = ESCOLA.NUMESC,COMPLEMENTO = ESCOLA.COMPLEND,BAIRRO = ESCOLA.BAIESC,MUNICIPIO = MUN,
        ACAOJOVEM.CEP = ESCOLA.CODCEP+COMPCEP,
        CLASSE = NUMCLASSE,TURNO =(CASE CLASSES.TURNO
                                    WHEN 1 THEN 'MANHA'  
                                    WHEN 2 THEN 'INTERMEDIARIO'
                                     WHEN 3 THEN 'TARDE'
                                    WHEN 4 THEN 'VESPERTINO'
                                    WHEN 5 THEN 'NOTURNO'
                                    WHEN 6 THEN 'INTEGRAL' ELSE '' END),
        GRAU = CLASSES.GRAU, SERIE = CLASSES.SERIE,ACAOJOVEM.TURMA = CLASSES.TURMA,ENDERECOALUNO = ALUNOS.END_RUA,ENDALUNONUM = ALUNOS.NUMERO,ENDALUNOCOMPL = ALUNOS.COMPLEMENTO,
        ENDALUNOBAIRRO = ALUNOS.BAIRRO,ENDALUNOCEP = ALUNOS.CEP, ENDALUNOCIDADE = ALUNOS.CIDADE,RA_CIE = ALUNOS.RA,DGRA_CIE = ALUNOS.DIGRA         
        FROM ACAOJOVEM AC
            JOIN ALUNOS  ON (AC.[Nome_mãe] = ALUNOS.NOME_MAE) AND AC.[Nome_do_beneficiário] = ALUNOS.NOME_ALUNO AND ALUNOS.DTNASC = AC.DATA_DE_NASCIMENTO
            JOIN CLASSES ON (CLASSES.CLASSE = ALUNOS.NUMCLASSE)
            JOIN ESCOLA  ON (ESCOLA.COD_ESC = CLASSES.COD_ESC)

    Veja que no 1º join é na onde eu estou tendo problemas com a data ele roda roda roda sem fim ai na soluçao que eu tinha achado que daria era

    1º UPDATE TABELA SET DATA = CONVERT(DATETIME,112)  PARA FICAR NO FORMATO AAAAMMDD

    e depois cruzar so que quando eu fiz esse update ele ficou com umas data nada a ver ai foi quando eu fiz com o

    SELECT CONVERT(VARCHAR,(CAST(DATA_DE_NASCIMENTO AS DATE)),112) FROM ACAOJOVEM -- mais com todos os campos que preciso joguei em outra tabela

    e fiz a relaçao com ele..

    Eu valido um arquivo que recebi de acordo com a minha base de dados nao seria bem um atualizar..




    • Editado Uelson.Jr quarta-feira, 24 de outubro de 2012 17:41 Retificaçao
    quarta-feira, 24 de outubro de 2012 17:33
  • Olá galera, so para postar aqui um modo mais pratico que achei foi assim:

    1º criei um campo adicional

    depois fiz assim com esse script abaixo ao inves de jogar em outra tabela, pensando bem aqui atraves das discussoes

    acho que nao teria como mesmo dar um update dentro dele mesmo

    UPDATE tabela SET novocampo = CONVERT(NVARCHAR,(CAST(DATA_DE_NASCIMENTO AS DATE)),112) FROM tabela

    mais obrigado aos que colaboraram com a duvida

    quarta-feira, 24 de outubro de 2012 19:11
  • OK Uelson.

    Peço o favor de classificar as respostas que foram úteis.


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quinta-feira, 25 de outubro de 2012 10:12
    Moderador