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

Obtener diferencia en horas minutos y segundos SQL

Estas en el tema de Obtener diferencia en horas minutos y segundos SQL en el foro de SQL Server en Foros del Web. Buenas Estoy intentando sacar el computo total en horas ,minutos y segundos en un intervalo de días ej: '2012-12-03 10:18:22.883' '2012-12-03 10:20:43.060' Lo necesito sacar ...
  #1 (permalink)  
Antiguo 10/01/2014, 06:18
 
Fecha de Ingreso: febrero-2011
Mensajes: 89
Antigüedad: 10 años, 3 meses
Puntos: 1
Obtener diferencia en horas minutos y segundos SQL

Buenas

Estoy intentando sacar el computo total en horas ,minutos y segundos en un intervalo de días
ej: '2012-12-03 10:18:22.883' '2012-12-03 10:20:43.060'

Lo necesito sacar en una view y estoy tratando de sacarlo con la siguinete instrucción:
Código SQL:
Ver original
  1. SELECT     SUBSTRING(CONVERT(VARCHAR, DATEADD(ss, DATEDIFF(ss, fecha1+ 1, fecha2),  '19000101'), 120), 9, 11) AS ComputoHoras

resultado:
día hh:mm:ss
01 00:02:21

El problema es que obtiene un dia de direferencia aunque el rango sea en el mismo día
y necesitaría en vez de mostrar ese dato en días, meterlo en el computo de horas todo

¿Algunas ideas?
Muchas gracias de antemano

Última edición por gnzsoloyo; 10/01/2014 a las 06:33
  #2 (permalink)  
Antiguo 10/01/2014, 07:53
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 14 años, 9 meses
Puntos: 774
Respuesta: Obtener diferencia en horas minutos y segundos SQL

date una vuelta por este tema:

http://www.forosdelweb.com/f87/obten...horas-1030911/
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 10/01/2014, 12:52
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 8 años, 10 meses
Puntos: 40
Respuesta: Obtener diferencia en horas minutos y segundos SQL

Yo haria asi:

Código SQL:
Ver original
  1. DECLARE @D1 DateTime='2012-12-03 10:18:22.883',
  2.         @D2 DateTime='2012-12-03 10:20:43.060';
  3. SELECT  CAST(@D2-@D1 AS TIME);
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #4 (permalink)  
Antiguo 10/01/2014, 13:07
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 11 años, 10 meses
Puntos: 27
Respuesta: Obtener diferencia en horas minutos y segundos SQL

mira las funciones de fecha y hora de mysql.
http://dev.mysql.com/doc/refman/5.0/...functions.html
si no me equivoco con TIMEDIFF lo resolverias
  #5 (permalink)  
Antiguo 10/01/2014, 13:12
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 14 años, 9 meses
Puntos: 774
Respuesta: Obtener diferencia en horas minutos y segundos SQL

Cita:
Iniciado por luis010182 Ver Mensaje
mira las funciones de fecha y hora de mysql.
http://dev.mysql.com/doc/refman/5.0/...functions.html
si no me equivoco con TIMEDIFF lo resolverias
Este es un foro de sql, creo que no aplican las funciones de mysql
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 10/01/2014, 13:23
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 11 años, 10 meses
Puntos: 27
Respuesta: Obtener diferencia en horas minutos y segundos SQL

Cita:
Iniciado por Libras Ver Mensaje
Este es un foro de sql, creo que no aplican las funciones de mysql
Perdon esta viendo los "temas del dia" y no vi que decia SQL Server, igual esta equivalente para SQL Server : DATEDIFF

http://msdn.microsoft.com/es-es/library/ms189794.aspx
  #7 (permalink)  
Antiguo 13/01/2014, 02:23
 
Fecha de Ingreso: febrero-2011
Mensajes: 89
Antigüedad: 10 años, 3 meses
Puntos: 1
Respuesta: Obtener diferencia en horas minutos y segundos SQL

Muchas gracias por las ideas voy a probar a ver si soy capaz
Saludos
  #8 (permalink)  
Antiguo 13/01/2014, 15:31
 
Fecha de Ingreso: abril-2010
Mensajes: 65
Antigüedad: 11 años
Puntos: 3
Respuesta: Obtener diferencia en horas minutos y segundos SQL

Puedes usar ésta función (La obtuve de aquí mismo pero le he hecho algunos cambios), tal ves sirva de ayuda:
Código SQL:
Ver original
  1. CREATE FUNCTION calcularTiempo
  2. (
  3.     @Date1 Datetime,
  4.     @Date2 Datetime,
  5.     @TYPE VARCHAR(MAX)  -- Forma en la que se va a transformar
  6. )                       -- 1: Formato String x horas x minutos x segundos
  7.                         -- 2: Formato Number HH:MM:SS
  8.  
  9. RETURNS VARCHAR(MAX)
  10. AS
  11. BEGIN
  12.     DECLARE @temp VARCHAR(100)
  13.     DECLARE @horas INT
  14.     DECLARE @minutos INT
  15.     DECLARE @tempMINUTOS INT
  16.     DECLARE @segundos BIGINT
  17.    
  18.     SET @segundos = (
  19.         SELECT
  20.             datediff(SECOND,@Date1, @Date2) AS Segundos
  21.     )
  22.  
  23.     SET @temp ='...'
  24.  
  25.     IF (@segundos < 3600) BEGIN
  26.    
  27.         SET @minutos =  FLOOR(@minutos / 60)
  28.         SET @segundos = @minutos % 60
  29.             --Según el tipo recibido lo formateo de una forma u otra
  30.             IF @TYPE = 1
  31.                 SET @temp = '0 Horas ' + CONVERT(VARCHAR, @minutos) + ' Minutos ' + CONVERT(VARCHAR, @segundos) + ' Segundos'
  32.             ELSE            
  33.                 SET @temp = '00:' + CONVERT(VARCHAR, @minutos) + ':' +  CONVERT(VARCHAR, @segundos)
  34.     END ELSE
  35. BEGIN
  36.     SET @horas = FLOOR(@segundos / 3600)
  37.     SET @tempMINUTOS = @segundos % 3600
  38.     SET @minutos = FLOOR(@tempMINUTOS / 60) --MINUTOS FINALES
  39.     SET @segundos = @tempMINUTOS % 60
  40.         --Según el tipo recibido lo formateo de una forma u otra
  41.         IF @TYPE = 1
  42.             SET @temp = CONVERT(VARCHAR, @horas) + ' Horas ' + CONVERT(VARCHAR, @minutos) + ' Minutos ' + CONVERT(VARCHAR, @segundos) + ' Segundos'
  43.         ELSE            
  44.             SET @temp = CONVERT(VARCHAR, @horas) + ':' + CONVERT(VARCHAR, @minutos) + ':' + CONVERT(VARCHAR, @segundos)
  45. END
  46.     RETURN @temp
  47. END
Al final executas asi (Ver diferencia):
Código SQL:
Ver original
  1. SELECT
  2. dbo.calcularTiempo ('2012-12-02 10:18:22.883','2012-12-03 10:20:43.060',1)

o
Código SQL:
Ver original
  1. SELECT
  2. dbo.calcularTiempo ('2012-12-02 10:18:22.883','2012-12-03 10:20:43.060',2)

Última edición por gnzsoloyo; 13/01/2014 a las 17:14
  #9 (permalink)  
Antiguo 13/01/2014, 17:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 13 años, 5 meses
Puntos: 2656
Respuesta: Obtener diferencia en horas minutos y segundos SQL

Por favor, usar el Highlight "SQL" de modo de hacer que los códigos sean más legibles. Para eso está.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: diferencia, fecha, horas, minutos, segundos, select, 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 13:30.