none
Converter minutos (Float) para HH:MM RRS feed

Respostas

  • A fórmula que postei para a conversão estava com problema mesmo. 

    Experimente mais ou menos dessa forma:

    with CTE_AVG as
    (
        select 
            matricula,
            convert(datetime, avg(minutos) / 24 / 60) as Media
        from Tabela
        group by
            matricula
    )
    
    select
        Media,
        CONVERT(VARCHAR, DATEDIFF(DAY, 0, Media) * 24 + DATEPART(HOUR, Media)) +
        ':' +
        RIGHT('0' + CONVERT(VARCHAR, DATEPART(MINUTE, Media)), 2)
    from CTE_AVG

    Se você realmente não puder utilizar CTE, você pode utilizar uma tabela derivada:

    select
        Media,
        CONVERT(VARCHAR, DATEDIFF(DAY, 0, Media) * 24 + DATEPART(HOUR, Media)) +
        ':' +
        RIGHT('0' + CONVERT(VARCHAR, DATEPART(MINUTE, Media)), 2)
    from 
    (
        select 
            matricula,
            convert(datetime, avg(minutos) / 24 / 60) as Media
        from Tabela
        group by
            matricula
    ) as t
    

    Espero que ajude


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

    • Marcado como Resposta Edvaldo A terça-feira, 14 de fevereiro de 2017 17:47
    terça-feira, 14 de fevereiro de 2017 17:37

Todas as Respostas

  • Boa tarde,

    Edvaldo, não sei como você costuma fazer a conversão dos minutos para hh:mm, mas experimente fazer uns testes mais ou menos dessa forma:

    with CTE_AVG as
    (
        select 
            matricula,
            convert(datetime, avg(minutos) / 24 / 60) as Media
        from Tabela
        group by
            matricula
    )
    
    select
        matricula,
        CONVERT(VARCHAR, DATEPART(DAY, Media) * 24 + DATEPART(HOUR, Media)) +
        ':' +
        RIGHT('0' + CONVERT(VARCHAR, DATEPART(MINUTE, Media)), 2)
    from CTE_AVG

    Espero que ajude


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

    terça-feira, 14 de fevereiro de 2017 16:48
  • Basta somar com a hora 00:00

    DECLARE @minute int
    SET @minute=60
    
    SELECT CONVERT(varchar(5),DATEADD(minute,@minute,0),108)
    

    att


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

    terça-feira, 14 de fevereiro de 2017 16:49
  • Obrigado pela ajuda gapimex,

    Fiz o teste com código que vc sugeriu, porém veja o resultado de um exemplo :


    A matricula 471421 tem 3 registros,  se fizermos uma média do valores desconsiderando o valor Null (vou tratar posteriormente), a média será 208 minutos = 03:28, mas a CTE me retorna 27:27 ...

    Obs.: Não poderei usar CTE.

    terça-feira, 14 de fevereiro de 2017 17:26
  • A fórmula que postei para a conversão estava com problema mesmo. 

    Experimente mais ou menos dessa forma:

    with CTE_AVG as
    (
        select 
            matricula,
            convert(datetime, avg(minutos) / 24 / 60) as Media
        from Tabela
        group by
            matricula
    )
    
    select
        Media,
        CONVERT(VARCHAR, DATEDIFF(DAY, 0, Media) * 24 + DATEPART(HOUR, Media)) +
        ':' +
        RIGHT('0' + CONVERT(VARCHAR, DATEPART(MINUTE, Media)), 2)
    from CTE_AVG

    Se você realmente não puder utilizar CTE, você pode utilizar uma tabela derivada:

    select
        Media,
        CONVERT(VARCHAR, DATEDIFF(DAY, 0, Media) * 24 + DATEPART(HOUR, Media)) +
        ':' +
        RIGHT('0' + CONVERT(VARCHAR, DATEPART(MINUTE, Media)), 2)
    from 
    (
        select 
            matricula,
            convert(datetime, avg(minutos) / 24 / 60) as Media
        from Tabela
        group by
            matricula
    ) as t
    

    Espero que ajude


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

    • Marcado como Resposta Edvaldo A terça-feira, 14 de fevereiro de 2017 17:47
    terça-feira, 14 de fevereiro de 2017 17:37
  • Opa ! funcionou direitinho agora, obrigado cara !
    terça-feira, 14 de fevereiro de 2017 17:47