Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Convertir valor a date

Estas en el tema de Convertir valor a date en el foro de SQL Server en Foros del Web. Hola Foreros. Tengo una duda. En una tabla de resigtros se almacena el tiempo abierto de una solicitud pero se almacena en minutos, es de ...
  #1 (permalink)  
Antiguo 22/10/2009, 09:02
 
Fecha de Ingreso: septiembre-2009
Mensajes: 34
Antigüedad: 14 años, 7 meses
Puntos: 0
Convertir valor a date

Hola Foreros.

Tengo una duda. En una tabla de resigtros se almacena el tiempo abierto de una solicitud pero se almacena en minutos, es de tipo int.

Es decir s duró abierto una hr, aparece en el registro 60. O si duro 1 hr 20 min aparece el número 80.

Como puedo comvertir el campo para mostrarlo en un select .... y que aparesca 1 hora en ves del número 60 ???

Se puede hacer esto????
  #2 (permalink)  
Antiguo 22/10/2009, 10:37
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Convertir valor a date

Matematicas simples

SELECT 80/60
  #3 (permalink)  
Antiguo 22/10/2009, 14:42
 
Fecha de Ingreso: septiembre-2009
Mensajes: 34
Antigüedad: 14 años, 7 meses
Puntos: 0
De acuerdo Respuesta: Convertir valor a date

Gracias iislas !! Claro, es la básica pero solo me dara un número ej. 80/60 = 1.3

Pero deseo que el campo que actualmente contiene el 80 me de de forma textual '1 hr 20 min' y no que me aparesca 1.20.

Espero puedas apoyarme.........


Saludos!
  #4 (permalink)  
Antiguo 22/10/2009, 15:10
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Convertir valor a date

Bueno, eso de HR y MIN es un simple texto, aqui lo interesante del asunto, es SUMAR las horas, minutos y segundos, para "CONVERTIR" de los totales, las correspondientes HORAS, MINUTOS Y SEGUNDOS.

/*
create table #TEST(Duracion DATETIME)

INSERT INTO #TEST VALUES('1900-01-01 00:00:32.000')
INSERT INTO #TEST VALUES('1900-01-01 00:01:28.000')
INSERT INTO #TEST VALUES('1900-01-01 00:01:02.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:08.000')
INSERT INTO #TEST VALUES('1900-01-01 00:02:13.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:27.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:18.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:17.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:16.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:11.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:39.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:13.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:10.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:19.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:26.000')
INSERT INTO #TEST VALUES('1900-01-01 00:01:46.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:58.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:55.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:32.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:48.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:48.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:58.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:32.000')
INSERT INTO #TEST VALUES('1900-01-01 00:02:14.000')
INSERT INTO #TEST VALUES('1900-01-01 00:01:11.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:21.000')
INSERT INTO #TEST VALUES('1900-01-01 00:00:35.000')

SELECT
X.HORAS + (X.MINUTOS/60) + ((X.SEGUNDOS / 60) / 60) AS HORAS,
(X.SEGUNDOS / 60 + X.MINUTOS) % 60 AS MINUTOS,
X.SEGUNDOS % 60 AS SEGUNDOS
FROM ( SELECT
SUM(DATEPART(HH, DURACION)) AS HORAS,
SUM(DATEPART(MI, DURACION)) AS MINUTOS,
SUM(DATEPART(SS, DURACION)) AS SEGUNDOS
from #TEST)
AS X
*/
  #5 (permalink)  
Antiguo 22/10/2009, 15:39
 
Fecha de Ingreso: septiembre-2009
Mensajes: 34
Antigüedad: 14 años, 7 meses
Puntos: 0
De acuerdo Respuesta: Convertir valor a date

orale ! se ve interesante, no sabía que se pueden 2 selects seguidos.

Voy a probarlo, gracias por la idea. espero quede a la perfección.

Grax iislas
  #6 (permalink)  
Antiguo 27/10/2009, 16:00
Avatar de Atonovich  
Fecha de Ingreso: diciembre-2002
Ubicación: ...
Mensajes: 117
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: Convertir valor a date

Yo haría una función SQL Server:

create function minutosAhoras(@minutos int)
returns varchar(100)
as
begin

declare @temp varchar(100)
declare @horas int
declare @resto int

set @temp ='...'

if (@minutos < 60)
set @temp ='0 hrs ' + convert(varchar, @minutos) + ' minutos'
else
begin
set @horas = @minutos / 60
set @resto = @minutos % 60

set @temp = convert(varchar, @horas) + ' hrs ' + convert(varchar, @resto) + ' minutos'
end

return @temp

end


Y la invocas:

select dbo.minutosAhoras(120)
Retorna:
2 hrs 0 minutos
__________________
" El hombre es una invención de Dios o Dios es una invención del hombre..."
  #7 (permalink)  
Antiguo 27/10/2009, 17:35
 
Fecha de Ingreso: septiembre-2009
Mensajes: 34
Antigüedad: 14 años, 7 meses
Puntos: 0
De acuerdo Respuesta: Convertir valor a date

Vientos Atonovich. Buena alternativa !

Voy a probarlo así, a ver que tal, soy novaton en SQL y no la armo chido con las funciones.

Esta opción se ve muy bien, la intentaré a ver que tal.

Gracias !
  #8 (permalink)  
Antiguo 19/11/2009, 09:51
 
Fecha de Ingreso: septiembre-2009
Mensajes: 34
Antigüedad: 14 años, 7 meses
Puntos: 0
De acuerdo Respuesta: Convertir valor a date

Vientos Atonovich. Asi fue. Excelente alternativa !

Ya lo probé y anda fregón.

Muchas gracias por tu apoyo!!

Saludos!
  #9 (permalink)  
Antiguo 19/11/2009, 09:58
Avatar de Atonovich  
Fecha de Ingreso: diciembre-2002
Ubicación: ...
Mensajes: 117
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: Convertir valor a date

¡Qué gustazo! felices consultas.
__________________
" El hombre es una invención de Dios o Dios es una invención del hombre..."
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:18.