none
Pegar valor em horas/minutos e transformar em Minutos

    Question

  • Oi,

    Eu tenho um valor em horas/minutos que transformar em minutos, alguem poderia ajudar?

    DECLARE

    @nSOMA2 INT

    set

    @nSOMA2 = ((480 * 2880)/1440)-(2,30*60)
     

    select

    @nSOMA2

    Eu queria que esse tempo (2,30*60) ficaria com resultado 150 que é o certo,

    mais se faço desse jeito fica 138 minutos que é falso.. O tempo 2,30 viria de uma coluna.

     

    Att,

    Friday, August 12, 2011 5:32 PM

All replies

  • Diego

    acredigo que vc esta tentando calcular 2 hrs e meia, mas como vc calculando com um numero cheio vc tem dois caminhos o transforma este 2.3 em 2.5 (.5 é metade de 1, no caso 1 hora)

    select (2.50*60)

     

    ou separa hr cheia de fração

     
    declare @hora decimal(4,2)
    set @hora=2.30

    select (FLOOR(@hora) * 60)+((@hora- FLOOR(@hora))*100)

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    Friday, August 12, 2011 6:21 PM
  • Marcelo

    É isto mesmo que você disse..

    O valor 2,30 seria 2,50 que é duas horas e meia

    Mais ele vai vim como 2,30 por isso tava complicado.

    Mais como você conseguiu já vou usar seu exemplo como fração =)

    Obrigado em!

    Friday, August 12, 2011 6:48 PM
  • Boa Tarde,

    Alguns links para estudo posterior

    Como realizar cálculos com horas no SQL Server – Parte I
    http://gustavomaiaaguiar.wordpress.com/2009/04/03/como-realizar-calculos-com-horas-no-sql-server-%E2%80%93-parte-i/

    Como realizar cálculos com horas no SQL Server – Parte II
    http://gustavomaiaaguiar.wordpress.com/2009/04/08/como-realizar-calculos-com-horas-no-sql-server-%E2%80%93-parte-ii/

    Como realizar cálculos com horas no SQL Server – Parte III
    http://gustavomaiaaguiar.wordpress.com/2009/04/14/como-realizar-calculos-com-horas-no-sql-server-%E2%80%93-parte-iii/

    Como realizar cálculos com horas no SQL Server – Parte IV
    http://gustavomaiaaguiar.wordpress.com/2009/04/19/como-realizar-calculos-com-horas-no-sql-server-%e2%80%93-parte-iv/

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    Friday, August 12, 2011 7:00 PM
  • Marcelo, estou com outro probleminha..

    Agora queria pegar um valor em minutos por exemplo 380 minutos e passar para hora

    que ficaria 6:20 minutos..

    eu fiz assim

    declare

    @hora decimal(6,2)

    set

    @hora=380

    PRINT

    (FLOOR(@hora)/60)+((@hora/60.0- FLOOR(@hora/60.0))*0.6)

    O valor está dando  6.5333328

    mais o certo é 6.1999998 = 6.19

    Att,

     

     
    Tuesday, August 16, 2011 1:36 PM
  • Já resolvi, era uma coisa besta, tava passando com decimal, so mudei para int, ai os minutos ficou sem casas decimais!
    Tuesday, August 16, 2011 1:45 PM
  • Diego,

     

    Se possível e achar juste poste o seu script final e marque como resposta a(s) thread(s) que o ajudou, esta ação poderá ajudar outros usuários do forum com dúvidas semelhantes...

     

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    Tuesday, August 16, 2011 2:21 PM
  • Aqui está Marcelo o script ajustado

     

    declare

    @hora int
     

    set

    @hora=380

    print

    (FLOOR(@hora)/60)+((@hora/60.0- FLOOR(@hora/60.0))*0.6)

    --com cast para pegar duas casas decimais

    print

    cast((FLOOR(@hora)/60)+((@hora/60.0- FLOOR(@hora/60.0))*0.6) as decimal(6,2))
    Tuesday, August 16, 2011 2:51 PM
  • Olá pessoal,

    Estou com um proble agora em um select.. pegando varios valores em horas decimais..

    Esse é meu script..

    CREATE TABLE #TABLE (A DECIMAL(5,2))
    INSERT INTO #TABLE VALUES (1.05)
    INSERT INTO #TABLE VALUES (1.05)
    INSERT INTO #TABLE VALUES (1.05)
    INSERT INTO #TABLE VALUES (1.45)
    INSERT INTO #TABLE VALUES (1.05)
    --DROP TABLE #TABLE
        
    SELECT ISNULL(CONVERT(VARCHAR,SUM(CONVERT(DECIMAL,FLOOR(A))) + (((SUM(CONVERT(DECIMAL,RIGHT(A,2)))) - (SUM(CONVERT(DECIMAL,RIGHT(A,2)))%60))/60))+'.'+ 
    CONVERT(VARCHAR,SUM(CONVERT(DECIMAL,RIGHT(A,2)))%60),0)
     FROM #TABLE 
    

     Se voces rodarem vão ver que da valor de 6.5 mais o correto é 6.05

    Agora nos outros casos está dando certo, se for da 5.60 ele arredonda para 6.00

    Alguem poderia ajudar?!

    Desde já agradeço.. 

    Friday, September 09, 2011 6:04 PM
  • Diego

    acredito que exista outra forma mais performática.. mas esta funciona

    CREATE TABLE #TABLE (A DECIMAL(5,2))
    INSERT INTO #TABLE VALUES (1.05)
    INSERT INTO #TABLE VALUES (1.05)
    INSERT INTO #TABLE VALUES (1.05)
    INSERT INTO #TABLE VALUES (1.45)
    INSERT INTO #TABLE VALUES (1.05)
    
    ;with cte_dados
    as
    (
    SELECT cast(FLOOR(sum(a))as decimal(5,2)) hora, sum(a) horat 
    FROM #TABLE 
     ), cte_horas as (select cast(cast(hora as int) as varchar)+':00' as hora, cast((horat-hora)*100 as int) as minuto from cte_dados)
    
     select convert(varchar(5),DATEADD(mi,minuto,hora), 108) from cte_horas
     go
     drop table #TABLE
    



    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    Friday, September 09, 2011 9:43 PM
  • Marcelo funciona certinho mesmo..

     

    Mais tava querendo o resultado como decimal.. ta dando 05:00, eu preciso de 5,00 ou 5,05....

    Mais obrigado desde já..

    Sunday, September 11, 2011 6:07 PM
  • Diego

    a soma 6,05 e não 5,05m veja se o script abaixo de atende

    CREATE TABLE #TABLE (A DECIMAL(5,2))
    INSERT INTO #TABLE VALUES (1.05)
    INSERT INTO #TABLE VALUES (1.05)
    INSERT INTO #TABLE VALUES (1.05)
    INSERT INTO #TABLE VALUES (1.45)
    INSERT INTO #TABLE VALUES (1.05)
    --DROP TABLE #TABLE
    ;with cte_dados
    as
    (
    SELECT cast(FLOOR(sum(a))as decimal(5,2)) hora, sum(a) horat 
    FROM #TABLE 
     ), cte_horas as (select hora, cast((horat-hora)*100 as decimal(5,2)) as minuto from cte_dados)
    
     select hora+(cast(minuto as int)/60) + (((minuto)%60)/100) from cte_horas
    
     go
     drop table #TABLE
    



    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    Monday, September 12, 2011 11:44 AM