none
Case campo Int e Data RRS feed

  • Pergunta

  • Pessoal,

    estou montando um case na seguinte condição

    case  when S.NivelTipo = 'H' then CAST(S.Hora as INT)

    when S.NivelTipo = 'D' then CONVERT(VARCHAR(10),S.Calendario,103) end as VL

    ai recebo a seguinte msg

    Mensagem 245, Nível 16, Estado 1, Linha 2
    Falha ao converter o varchar valor '01/04/2015' para o tipo de dados int.
    como resolver isso ?

    att, wsti.

    quinta-feira, 20 de agosto de 2015 12:21

Respostas

  • Bom dia,

    O tipo de dados retornado em todas as condições do Case deve ser o mesmo, sendo que no seu caso, acredito que as opções seriam converter a coluna S.Hora para varchar(10), ou a S.Hora e a S.Calendario para DateTime ou semelhante. Ex:

    case 
        when S.NivelTipo = 'H' then CONVERT(VARCHAR(10), S.Hora, 108)
        when S.NivelTipo = 'D' then CONVERT(VARCHAR(10), S.Calendario, 103) 
    end as VL

    Espero que ajude.



    Assinatura: http://www.imoveisemexposicao.com.br

    quinta-feira, 20 de agosto de 2015 13:29
  • Bom dia,

    O Campo 'S.HORA' é de que tipo, provável que esse campo seja do tipo DATA e por isso a mensagem de erro.


    Atenciosamente, Ruberlei. www.t-sql.com.br


    • Editado Ruberlei quinta-feira, 20 de agosto de 2015 13:38 melhoria
    • Marcado como Resposta Durval RamosModerator domingo, 27 de setembro de 2015 21:03
    quinta-feira, 20 de agosto de 2015 13:37

Todas as Respostas

  • Bom dia,

    O tipo de dados retornado em todas as condições do Case deve ser o mesmo, sendo que no seu caso, acredito que as opções seriam converter a coluna S.Hora para varchar(10), ou a S.Hora e a S.Calendario para DateTime ou semelhante. Ex:

    case 
        when S.NivelTipo = 'H' then CONVERT(VARCHAR(10), S.Hora, 108)
        when S.NivelTipo = 'D' then CONVERT(VARCHAR(10), S.Calendario, 103) 
    end as VL

    Espero que ajude.



    Assinatura: http://www.imoveisemexposicao.com.br

    quinta-feira, 20 de agosto de 2015 13:29
  • Bom dia,

    O Campo 'S.HORA' é de que tipo, provável que esse campo seja do tipo DATA e por isso a mensagem de erro.


    Atenciosamente, Ruberlei. www.t-sql.com.br


    • Editado Ruberlei quinta-feira, 20 de agosto de 2015 13:38 melhoria
    • Marcado como Resposta Durval RamosModerator domingo, 27 de setembro de 2015 21:03
    quinta-feira, 20 de agosto de 2015 13:37
  • Ruberei e gapimex obrigado pela colaboração. realmente os campos são diferentes um é data e outro é um int.

    Acreditava que como a condição era o campo  S.NivelTipo = H ou D o T-sql entendesse qual seria o campo de retorno e a conversão seria uma mera formatação do campo. 

    Agora entendi, vou converter para varchar.

    Desde já agradeço a ajuda.

    Att, wsti.

    quinta-feira, 20 de agosto de 2015 14:07