SQL - Sencillo pero no doy con ello

 
Vista:

Sencillo pero no doy con ello

Publicado por vlg (18 intervenciones) el 08/02/2007 20:53:09
El caso es que quiero hacer lo siguientes:

declare @horas decimal(10,2)

set @horas = 149715 / 3600

El resultado de esta operacion es 41.00 cuando deberia ser 41.59 he conseguido obtener el resultado correcto de la siguiente manera

set @horas = 149715 / 3600.00

Bueno hasta aqui mas o menos lo entiendo, pero ahora viene cuando la matan debo realizar la siguientes opreracion

declare @minutos decimal(10,2)

set @minutos = 70128 / 60 % 60

ir el resultado es 28 cuando deberia de ser 29, ¿alguien me puede decir como realizar esta operacion para obtener los resultado correcto?

Muchas Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Sencillo pero no doy con ello

Publicado por Isaías (5072 intervenciones) el 08/02/2007 21:13:40
¿Que es lo que deseas obtener?, ¿HORAS, MINUTOS Y SEGUNDOS?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sencillo pero no doy con ello

Publicado por vlg (18 intervenciones) el 08/02/2007 21:26:14
Exacto, dado unos segundo mediante las operaciones del anterior post poder obtener HORA, MINUTOS, SEGUNDO...

¿SABES OTRA MANERA DE PODER OBTENER ESTA INFORMACION desde transact sql?

Al final probando he logrado obtener los resutados pero me parece bastante rebuscado, la manera es esta:

declare @param as int

set @param=70128

declare @horas decimal(2)
set @horas = @param / 3600.00

declare @minutos int
set @minutos = round(@param / 60.00,0)
set @minutos=@minutos % 60

declare @segundos int
set @segundos = @param % 60



print cast(@horas as nvarchar(2)) + ':' + cast(@minutos as nvarchar(2)) + ':' + cast(@segundos as nvarchar(2))
--valores 149715(ok-> 42:35:15) y 70128 (ok -> 19:29:48)


GRACIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sencillo pero no doy con ello

Publicado por Isaías (5072 intervenciones) el 08/02/2007 23:43:47
declare @sec int
set @sec=70128

-- Sin ceros a la izquierda
select
convert(varchar(5),@sec/3600)+':'+convert(varchar(5),@sec%3600/60)+':'+convert(varchar(5),(@sec%60))

-- Con ceros a la izquierda
SELECT CONVERT(varchar(6), @sec/3600)
+ ':' + RIGHT('0' + CONVERT(varchar(2), (@sec % 3600) / 60), 2)
+ ':' + RIGHT('0' + CONVERT(varchar(2), @sec % 60), 2)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sencillo pero no doy con ello

Publicado por vlg (18 intervenciones) el 09/02/2007 08:17:23
Gracias por tu contestacion pero el resutado de ambas select es de 19:28:48
y deberia de ser 19:29:48, el problema es que la division redondea hacia abajo en el caso de los minutos, se te ocurre alguna manera para hacer que redondee hacia arriba

Gracias por tu atencion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar