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

[SOLUCIONADO] SQL - Convertir Horas a Decimal

Estas en el tema de SQL - Convertir Horas a Decimal en el foro de SQL Server en Foros del Web. Estimados , mi consulta es la siquiente: Despues de restar las horas y que muestren solo las hora ( no la Fecha ) mi siguiente ...
  #1 (permalink)  
Antiguo 26/04/2013, 10:44
 
Fecha de Ingreso: marzo-2013
Mensajes: 25
Antigüedad: 6 años, 10 meses
Puntos: 0
Información SQL - Convertir Horas a Decimal

Estimados , mi consulta es la siquiente:

Despues de restar las horas y que muestren solo las hora ( no la Fecha ) mi siguiente problema es crear una columna donde se convierta a decimal , algo asi


create table prueba
(
hora datetime ,
hora2 datetime ,
horadif as cast((hora2 - hora) as time (0) ),
Horatotal as CONVERT( decimal (18,2) , horadif),

)


pero me sale error en Horatotal .

No se permite la conversión explícita del tipo de datos time a decimal.

Por favor como puedo crear una columna que convierta la hora en decimal o en float .
  #2 (permalink)  
Antiguo 26/04/2013, 10:48
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 13 años, 6 meses
Puntos: 774
Respuesta: SQL - Convertir Horas a Decimal

y porque en decimal? ya probaste con cast?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 26/04/2013, 10:55
 
Fecha de Ingreso: marzo-2013
Mensajes: 25
Antigüedad: 6 años, 10 meses
Puntos: 0
Respuesta: SQL - Convertir Horas a Decimal

Si probe y tambien me sale error .

lo que quiero es algo asi

hora1 = 02:20

hora2 = 05:50

horadif= 03:30

Horatotal = 3.5

Si tienes alguna alternativa tambien seria bueno.

La sintaxis seria algo asi :
create table prueba
(
hora datetime ,
hora2 datetime ,
horadif as cast((hora2 - hora) as time (0) ),
Horatotal as cast ((horadif) as nchar (30)),
)

Pero igual genera error.

Última edición por panquitaro; 26/04/2013 a las 10:57 Razón: Horatotal as cast ((horadif) as nchar (30)),
  #4 (permalink)  
Antiguo 26/04/2013, 11:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 13 años, 6 meses
Puntos: 774
Respuesta: SQL - Convertir Horas a Decimal

Código SQL:
Ver original
  1. CREATE TABLE #prueba
  2. (
  3. hora datetime ,
  4. hora2 datetime ,
  5. horadif AS CAST((hora2 - hora) AS TIME (0) ),
  6. Horatotal AS datediff(mi, hora, hora2) / 60.0
  7. )
  8.  
  9. INSERT INTO #prueba (hora,hora2) VALUES (GETDATE(),dateadd(mi,30,(DATEADD(hh,2,getdate()))))
  10. SELECT * FROM #prueba

:)

aqui dejo el link de donde tome la idea ;)

http://stackoverflow.com/questions/1...ith-an-integer
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 26/04/2013, 12:09
 
Fecha de Ingreso: marzo-2013
Mensajes: 25
Antigüedad: 6 años, 10 meses
Puntos: 0
Respuesta: SQL - Convertir Horas a Decimal

Gracias .... esas lineas son claves.

lo modifiqué para que soló muestre 2 decimales:

create table prueba
(
hora datetime ,
hora2 datetime ,
horadif as cast((hora2 - hora) as time (0) ),
--Mostrará solo 2 decimales.
Horatota2 AS cast ( datediff(mi, hora, hora2) / 60.0 as decimal (18,2))

)
GO

--No pongo GETDATE() por que las fechas van a ser ingresadas de manera manual por unDATETIMEPICKER

insert into prueba (hora,hora2) values ('23/03/2013 4:20' ,'23/03/2013 8:50' )

select * from prueba

Gracias Bro ...
Mas tarde doy por solucionado el tema pero ahora te dejo un "Like".

Última edición por panquitaro; 26/04/2013 a las 12:12 Razón: Mas Codigos
  #6 (permalink)  
Antiguo 26/04/2013, 12:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 13 años, 6 meses
Puntos: 774
Respuesta: SQL - Convertir Horas a Decimal

Cita:
Iniciado por panquitaro Ver Mensaje
Gracias .... esas lineas son claves.

lo modifiqué para que soló muestre 2 decimales:

create table prueba
(
hora datetime ,
hora2 datetime ,
horadif as cast((hora2 - hora) as time (0) ),
--Mostrará solo 2 decimales.
Horatota2 AS cast ( datediff(mi, hora, hora2) / 60.0 as decimal (18,2))

)
GO

--No pongo GETDATE() por que las fechas van a ser ingresadas de manera manual por unDATETIMEPICKER

insert into prueba (hora,hora2) values ('23/03/2013 4:20' ,'23/03/2013 8:50' )

select * from prueba

Gracias Bro ...
Mas tarde doy por solucionado el tema pero ahora te dejo un "Like".
yo puse getdate() porque me dio flojera poner la fecha completa con hora jejejeje :) saludos y que bien que te ayudo :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 26/04/2013, 16:21
 
Fecha de Ingreso: marzo-2013
Mensajes: 25
Antigüedad: 6 años, 10 meses
Puntos: 0
Respuesta: SQL - Convertir Horas a Decimal

Sí lo sé , pero algunos que no saben tanto de SQL ( como yo ) se preguntarán "por que tal codigo" etc etc ...

Muchas gracias Libras ... Caso solucionado.

Etiquetas: decimal, horas, natural, numero, sql
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 01:53.