none
O que ocorre de errado no convert? RRS feed

  • Pergunta

  • SELECT 
                   tabela1,
                    tabela2,
                    CONVERT(DATE, A.C5_EMISSAO) AS xyz,
                    tabela3,
                    tabela4

    FROM 

                    servidor..dbo.Tabela (NOLOCK)

    retorno: 

    Conversion failed when converting date and/or time from character string.

    O que estou fazendo de errado?

    terça-feira, 12 de novembro de 2013 13:45

Respostas

  • Deleted
    • Marcado como Resposta Giovani Cr quarta-feira, 20 de novembro de 2013 14:11
    terça-feira, 12 de novembro de 2013 18:13
  • Na verdade A.C5_EMISSAO contem um valor que nao pode ser convertido em data... Verfique o conteudo de A.C5_EMISSAO.

    Caso esteja usando o SQL Server 2012, existe uma nova instruçao Try_Parse:

    SELECT IIF(TRY_PARSE('01/01/2011' AS datetime2) IS NULL, 'True', 'False') AS Result;
    

    fonte:http://technet.microsoft.com/en-us/library/hh213126.aspx

    O try parse devolve null se a conversao falha ou o valor convertido.

    *Lembrando mais uma vez: isso só funciona se usado no SQL Server 2012

    Para oas outras versoes nao tem jeito... analise os valores da coluna em questao e tente identificar se o valor é passivel de conversao.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Sugerido como Resposta Roberson Naves quinta-feira, 14 de novembro de 2013 14:21
    • Marcado como Resposta Giovani Cr quarta-feira, 20 de novembro de 2013 14:11
    terça-feira, 12 de novembro de 2013 14:06
  • Ricardo, esse campo é do Protheus correto?

    Tente dessa forma, deve trazer o resultado que você espera.

    CONVERT(CHAR,CONVERT(DATE,C5_EMISSAO),103)

    Ou você pode utilizar a função STOD() do ADVPL.


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski


    terça-feira, 12 de novembro de 2013 18:41

Todas as Respostas

  • Na verdade A.C5_EMISSAO contem um valor que nao pode ser convertido em data... Verfique o conteudo de A.C5_EMISSAO.

    Caso esteja usando o SQL Server 2012, existe uma nova instruçao Try_Parse:

    SELECT IIF(TRY_PARSE('01/01/2011' AS datetime2) IS NULL, 'True', 'False') AS Result;
    

    fonte:http://technet.microsoft.com/en-us/library/hh213126.aspx

    O try parse devolve null se a conversao falha ou o valor convertido.

    *Lembrando mais uma vez: isso só funciona se usado no SQL Server 2012

    Para oas outras versoes nao tem jeito... analise os valores da coluna em questao e tente identificar se o valor é passivel de conversao.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Sugerido como Resposta Roberson Naves quinta-feira, 14 de novembro de 2013 14:21
    • Marcado como Resposta Giovani Cr quarta-feira, 20 de novembro de 2013 14:11
    terça-feira, 12 de novembro de 2013 14:06
  • Deleted
    • Marcado como Resposta Giovani Cr quarta-feira, 20 de novembro de 2013 14:11
    terça-feira, 12 de novembro de 2013 18:13
  • Ricardo, esse campo é do Protheus correto?

    Tente dessa forma, deve trazer o resultado que você espera.

    CONVERT(CHAR,CONVERT(DATE,C5_EMISSAO),103)

    Ou você pode utilizar a função STOD() do ADVPL.


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski


    terça-feira, 12 de novembro de 2013 18:41