none
Converter campo decimal em minutos SQL SERVER 2008 RRS feed

  • Pergunta

  • Galera, Boa noite!!!

    Preciso converter um campo decimal para minutos no SQL Server 2008.

    Exemplo.: 2.75 o valor do campo decimal

     

    Vlw  

    quinta-feira, 28 de abril de 2011 21:01

Respostas

  • Leandro,

    Veja se este exemplo te ajuda.

    Declare @TabNumero As Table (Numero Numeric(10,3))
    --
    Insert into @TabNumero values('2.75')
    --
    Declare @DataAtual datetime
    --
    Set @DataAtual = GETDATE()
    --
    Select  DateAdd(mi,(Numero * 60),@DataAtual) As DataCalculada, 
          @DataAtual As DataAtual 
    From  @TabNumero
    

    Espero que ajude! Luiz Phellipe
    • Sugerido como Resposta Rui SantosModerator sexta-feira, 29 de abril de 2011 02:03
    • Marcado como Resposta Eder Costa segunda-feira, 2 de maio de 2011 16:57
    sexta-feira, 29 de abril de 2011 01:41

Todas as Respostas

  • Leandro, é um campo numa tabela? Ou uma variável isolada?

    Se é um campo, os valores sempre estarão desta forma, com duas casas?

    E ainda: o seu exemplo representa 2 horas e 75 minutos, ou seja, 195 minutos?


    Roberson Ferreira


    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    sexta-feira, 29 de abril de 2011 00:54
    Moderador
  • Cara é um campo de uma tabela sim, mas cara, varia , o campo pode ter o valor por exemplo 10.00 ou o próprio 2.75, e eu preciso ainda faze a soma com DATEADD.
    sexta-feira, 29 de abril de 2011 01:29
  • Leandro,

    Veja se este exemplo te ajuda.

    Declare @TabNumero As Table (Numero Numeric(10,3))
    --
    Insert into @TabNumero values('2.75')
    --
    Declare @DataAtual datetime
    --
    Set @DataAtual = GETDATE()
    --
    Select  DateAdd(mi,(Numero * 60),@DataAtual) As DataCalculada, 
          @DataAtual As DataAtual 
    From  @TabNumero
    

    Espero que ajude! Luiz Phellipe
    • Sugerido como Resposta Rui SantosModerator sexta-feira, 29 de abril de 2011 02:03
    • Marcado como Resposta Eder Costa segunda-feira, 2 de maio de 2011 16:57
    sexta-feira, 29 de abril de 2011 01:41
  • Entendi. Mas a interpretação é essa mesma?

    10.00 = 10 horas + 00 minutos = 600 minutos

    2.75 = 2 horas + 75 minutos = 195 minutos

    20.333 = 20 horas + 333 minutos = 1533 minutos

    Ou seja, o número antes do separador de decimal representa horas, enquanto o número após o separador representa minutos. É isso?


    Roberson Ferreira


    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    sexta-feira, 29 de abril de 2011 01:43
    Moderador
  • Se 2.75h = 2h 45m 

    é so multiplicar por 60....

     

    2.75 * 60 = 165 minutos = 2h 45min....

     

     

    sexta-feira, 29 de abril de 2011 02:03
    Moderador
  • Realmente, se for para levar em conta a hipótese que o Rui levantou, somente multiplicar por 60 já resolve.

    Agora, se for para tratarmos da forma que mencionei em minha última postagem, precisaremos pegar os valores separadamente:

    Select

      (Convert(int, SubString(Convert(VarChar(10), @Valor), 1, CharIndex('.', Convert(VarChar(10), @Valor)) - 1)) * 60) + (Convert(int, SubString(Convert(VarChar(10), @Valor), CharIndex('.', Convert(VarChar(10), @Valor)) + 1, Len(Convert(VarChar(10), @Valor)) -  CharIndex('.', Convert(VarChar(10), @Valor)))))

    Onde @Valor seria o campo em questão.


    Roberson Ferreira


    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    sexta-feira, 29 de abril de 2011 04:39
    Moderador