none
ERRO CONVERSÃO INT VARCHAR RRS feed

  • Pergunta

  • Estou com erro na conversão do meu case:

    Msg 245, Level 16, State 1, Line 1
    Conversion failed when converting the varchar value ',' to data type int   

    ****JÁ SEI QUE O ERRO ESTÁ NA JUNÇÃO DE HORAS + VARCHAR + MINUTOS.

    MAS COMO CORRIGIR ?

    SELECT

    WHEN RIGHT(CONVERT(VARCHAR,MIN(X.HORAINI),108),2) < 35        AND RIGHT(CONVERT(VARCHAR,MAX(X.HORAFIM),108),2) >= 35  THEN  CAST(DATEDIFF(HOUR,X.HORAINI,X.HORAFIM) AS INT) + ',' + CAST(RIGHT(CONVERT(VARCHAR,MAX(X.HORAFIM),108),2) AS VARCHAR(50)) WHEN RIGHT(CONVERT(VARCHAR,MIN(X.HORAINI),108),2) >=  35 AND  RIGHT(CONVERT(VARCHAR,MAX(X.HORAFIM),108),2) < 35 THEN  CAST(DATEDIFF(HOUR,X.HORAINI,X.HORAFIM) AS INT) + ',' + CAST(RIGHT(CONVERT(VARCHAR,MIN(X.HORAINI),108),2) AS VARCHAR(50)) ELSE DATEDIFF(HOUR,X.HORAINI,X.HORAFIM)

    END THARREDONDADA

     FROM TABELA


    SQL2008.



    Droberti

    quinta-feira, 17 de outubro de 2019 14:41

Respostas

Todas as Respostas

  • Deleted
    quinta-feira, 17 de outubro de 2019 14:54
  • Agora deu esse erro:

    Conversion failed when converting the varchar value '6,50' to data type int.



    Droberti

    quinta-feira, 17 de outubro de 2019 14:57
  • Deleted
    quinta-feira, 17 de outubro de 2019 15:05
  • PRECISO APENAS SOMAR HORAS E ARRENDONDAR PRA CIMA ESSAS HORAS





    SELECT 
    CONVERT(VARCHAR,X.DATA,103) DATA,
    MIN(X.HORAINI) ENTRADA,
    MIN(X.HORAFIM) SAIDA,
    DATEDIFF(HOUR,X.HORAINI,X.HORAFIM) TOTALHORAS,


    CASE  

    WHEN RIGHT(CONVERT(VARCHAR,MIN(X.HORAINI),108),2) < 35  AND RIGHT(CONVERT(VARCHAR,MAX(X.HORAFIM),108),2) >= 35 
    THEN  CAST(DATEDIFF(HOUR,X.HORAINI,X.HORAFIM) as varchar(10)) + ',' + CAST(RIGHT(CONVERT(VARCHAR,MAX(X.HORAFIM),108),2) AS VARCHAR(50))
    WHEN RIGHT(CONVERT(VARCHAR,MIN(X.HORAINI),108),2) >=  35  AND  RIGHT(CONVERT(VARCHAR,MAX(X.HORAFIM),108),2) < 35
    THEN  CAST(DATEDIFF(HOUR,X.HORAINI,X.HORAFIM) as varchar(10)) + ',' + CAST(RIGHT(CONVERT(VARCHAR,MIN(X.HORAINI),108),2) AS VARCHAR(50))
    ELSE DATEDIFF(HOUR,X.HORAINI,X.HORAFIM)

    END THARREDONDADA

    FROM TABELA A  
    JOIN TABELA  B ON ON B_ID = A_ID 



    MEU CASE PRECISA TRAZER 

    ENTRADA FOR  08:00  E SAIDA FORA 20:00 ( VALOR REDONDO ) PRECISA TRAZER THARREDONDADA = 12
    ENTRADA FOR  08:00  E SAIDA FORA 20:30 ( VALOR REDONDO ) PRECISA TRAZER THARREDONDADA = 11,5
    ENTRADA FOR  08:30  E SAIDA FORA 20:30 ( VALOR REDONDO ) PRECISA TRAZER THARREDONDADA = 12
    ENTRADA FOR  08:30  E SAIDA FORA 20:00 ( VALOR REDONDO ) PRECISA TRAZER THARREDONDADA = 1,5
    ENTRADA FOR  08:20  E SAIDA FORA 20:30 ( VALOR REDONDO ) PRECISA TRAZER THARREDONDADA = 11,5


    Droberti

    quinta-feira, 17 de outubro de 2019 16:16
  • Deleted
    • Marcado como Resposta Drobertii quinta-feira, 17 de outubro de 2019 17:01
    quinta-feira, 17 de outubro de 2019 16:54
  • Isso mesmo.

    O problema estava no else.... o código aqui está tão grande e estou minimizando para processar menos, mas quando chegou nessa parte deu uma travada.

    Muito Obrigado!!!


    Droberti

    quinta-feira, 17 de outubro de 2019 17:02