CONVERTER MINUTOS EM HORAS

GUILHERMEMFA 15/01/2014 16:26:54
#433106
Boa tarde Pessoal!

Tô com o seguinte problema.
Trabalho com o SQL Server 2008 R2

para converter minutos em horas:minutos
realizo o seguinte procedimento:

Citação:

Declare @Minutos as VARCHAR(40)
Set @Minutos = [ô]165,86[ô]
select CONVERT(NVARCHAR, CONVERT(DATETIME, cast(replace(cast(@Minutos as money)/6000,[ô],[ô],[ô].[ô]) as money)/24), 108) as HorasMinutos



Essa query me retorna:
02:45 - (Duas horas e quarenta e cinco minutos)


porém, se eu coloco @Minutos = [ô]1450,86[ô]
Ela me retorna:
00:00

Alguém saberia me dizer o que preciso alterar na query para que possa me trazer a quantidade de horas e minutos corretas?

Grato



KERPLUNK 15/01/2014 16:37:57
#433107
Caramba, que confusão isso. Melhor assim:

declare @minutos as integer
set @minutos = 182
SELECT CONVERT(VARCHAR(5),dateadd(minute,@minutos,0),108)
GUILHERMEMFA 15/01/2014 16:44:57
#433108
Você não converteu o valor que eu falei
Tenta converter ele:
1450.86
KERPLUNK 15/01/2014 17:07:42
#433109
Simples. Esse valor é vai dar mais de 24 horas, ou seja um dia a mais e portanto não pode ser expresso no formato de horas, mas sim no formato de Data mesmo
MARCELOKROL 15/01/2014 21:03:30
#433116
mais se você quiser em horas mesmo assim:
dim Temp as long
dim horas as long
dim minutos as long
temp = 1450.86 / 60 [ô]a hora tem 60 minutos

horas = int(temp) [ô]somente as horas
minutos =int(temp * ( temp - int(temp)))

msgbox horas & [Ô] horas e [Ô] & minutos [Ô] & minutos

se estiver errado ou uma maneira de melhorar o código os colegas ai que me corrijam.
GUILHERMEMFA 16/01/2014 07:30:30
#433125
Preciso que seja em horas e que seja via SQL e não código VB.
Como faço isso?

Alguém sabe?
KERPLUNK 16/01/2014 08:55:08
#433129
Você cai querer exibir o valor assim?
24:15
36:44
02:19

Porque se for, vai ter que fazer uma função específica para isso.
MARCELO.TREZE 16/01/2014 10:47:54
#433139
Resposta escolhida
Como o Kerplunk disse você vai ter de criar uma funcao pra isso.

então dentro do sql server crie

CREATE FUNCTION dbo.FN_CONVMIN (@MINUTOS int)
RETURNS NVARCHAR(7)
BEGIN
DECLARE @iHoras INTEGER
DECLARE @iMinutos INTEGER
DECLARE @sEdita VARCHAR(7)

SET @iHoras = CAST(ROUND(@MINUTOS/60, 0) AS INT)
SET @iMinutos = @MINUTOS % 60

SET @sEdita = CASE LEN(@iHoras)
WHEN 0 THEN [ô]00[ô]
WHEN 1 THEN [ô]0[ô] + CONVERT(NVARCHAR(1), @iHoras)
ELSE CONVERT(NVARCHAR(4),@iHoras)
END

SET @sEdita = @sEdita + [ô]:[ô] + CASE LEN(@iMinutos)
WHEN 0 THEN [ô]00[ô]
WHEN 1 THEN [ô]0[ô] + CONVERT(NVARCHAR(3), @iMinutos)
ELSE CONVERT(NVARCHAR(4), @iMinutos)
END
IF @sEdita = [ô]00:00[ô] BEGIN SET @sEdita = [ô] [ô] END

RETURN @sEdita
END


e chame assim

SELECT dbo.FN_CONVMIN ([ô]165,86[ô]) FROM tabela


a funçao de conversão não foi criada por mim não tenho certeza de que funcione corretamente, mas coloquei para que você possa se basear na mesma para facilitar sua vida



GUILHERMEMFA 16/01/2014 16:36:45
#433175
Boa. é assim que se faz Marcelo. Deu certim.Vlw
Tópico encerrado , respostas não são mais permitidas