SQL - sumar horas de una columna

 
Vista:

sumar horas de una columna

Publicado por Christian (77 intervenciones) el 08/11/2006 17:06:32
Holas:
tengo el campo "acumulados" tipo datetime
donde guardo solo minutos.

Ejemplo:

acumulados
1900-01-01 00:05:00.000 (5 minutos)
1900-01-01 00:06:00.000 (6 minutos)
1900-01-01 00:09:00.000 (9 minutos)

Como se hace un Select para obtener la suma de éstos 3 registros, para que me muestre 20 minutos.

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:sumar horas de una columna

Publicado por Tom (2 intervenciones) el 08/11/2006 19:09:34
¿ En qué gestor de BD ?
Busca una función que devuelva los minutos de una fecha.

select sum(date_trunc(acumulados, "min")) from
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:sumar horas de una columna

Publicado por Christian (77 intervenciones) el 08/11/2006 19:39:38
esta demas decir que es sql
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

NO SE PUEDE??

Publicado por Christian (77 intervenciones) el 08/11/2006 21:12:13
SOLO DIGANME SI O NO??
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:sumar horas de una columna

Publicado por Isaías (5072 intervenciones) el 09/11/2006 00:55:36
¿SQL SERVER?, ¿Que version?
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:sumar horas de una columna

Publicado por Hubert (98 intervenciones) el 09/11/2006 00:55:47
Hola
Quieres esto

SELECT SUM(DATEPART(MINUTE, acumulados )) from TUTABLA

Espero que esto sea.
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:sumar horas de una columna

Publicado por Christian (77 intervenciones) el 09/11/2006 13:35:58
muchas gracias HUBERT
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

LA FUNCION NO FUNCIONA

Publicado por Christian (77 intervenciones) el 09/11/2006 14:27:51
LA FUNCION DE HUBERT FUNCIONA PERO SOLO ME CUENTA LOS MINUTOS Y NO LAS HORAS ACUMULADAS,

OTRA SOLUCION???
USO EL SQL2000
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
sin imagen de perfil

RE:LA FUNCION NO FUNCIONA

Publicado por Liliana (426 intervenciones) el 09/11/2006 15:16:00
SELECT SUM (DATEPART(MINUTE, acumulados )) / 60 As Horas,
SUM (DATEPART(MINUTE, acumulados )) % 60 As Minutos
FROM Tabla
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:LA FUNCION NO FUNCIONA

Publicado por Christian (77 intervenciones) el 09/11/2006 15:21:32
hola liliana,tengo esto:

acumulados
1900-01-01 02:10:00.000

y me sale esto:
horas minutos
0 10
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:LA FUNCION NO FUNCIONA

Publicado por Christian (77 intervenciones) el 09/11/2006 15:30:33
TENGO ESTO:
ACUMULADOS
1900-01-01 00:06:00.000
1900-01-01 00:51:00.000
1900-01-01 00:53:00.000
1900-01-01 00:06:00.000

Y EJECUTO:
SELECT SUM (DATEPART(hour, acumulados )) * 60 As Horas, SUM (DATEPART(MINUTE, acumulados )) As Minutos

ME SALE ESTO:

horas minutos
0 116

NO HAY MANERA DE QUE ME SALGA:

tiempo
01:56:00

?????
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
sin imagen de perfil

RE:LA FUNCION NO FUNCIONA

Publicado por Liliana (426 intervenciones) el 09/11/2006 15:33:49
Entonces:

SELECT SUM (DATEPART(MINUTE, acumulados )) / 60 + SUM (DATEPART(HOUR, acumulados )) As Horas,
SUM (DATEPART(MINUTE, acumulados )) % 60 As Minutos
FROM #Test
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:LA FUNCION NO FUNCIONA

Publicado por Christian (77 intervenciones) el 09/11/2006 15:36:17
gracias, pero no hay manera de que me salga en una sola columna??

solo por curiosidad--
nuevamente 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
sin imagen de perfil

RE:LA FUNCION NO FUNCIONA

Publicado por Liliana (426 intervenciones) el 09/11/2006 15:51:36
Cristian,
seguramente hubieras logrado vencer tu curiosidad con un poquitito de ingenio, y yo podría responderte en un solo post si tuviera toda la info de entrada...

-- En formato DateTime:
SELECT CONVERT (DATETIME,
CONVERT (CHAR (3), SUM (DATEPART(MINUTE, acumulados )) / 60 + SUM (DATEPART(HOUR, acumulados )) ) + ':' +
CONVERT (CHAR (3), SUM (DATEPART(MINUTE, acumulados )) % 60))
FROM #Test

-- En formato Char
SELECT
RIGHT('00' + CONVERT (VARCHAR(2),
SUM (DATEPART(MINUTE, acumulados )) / 60 +
SUM (DATEPART(HOUR, acumulados ) )), 2)
+ ':' +
CONVERT (CHAR (2), SUM (DATEPART(MINUTE, acumulados )) % 60)
FROM #Test
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:LA FUNCION NO FUNCIONA

Publicado por Tom (2 intervenciones) el 09/11/2006 18:40:14
Liliana, te felicito por tu paciencia, en serio :-)
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: aun falta pulir

Publicado por Elmer (1 intervención) el 10/05/2012 17:44:18
Prueba con este ejemplo y veras que sale "39:3 " y esa hora no existe


Create table #horas (myfecha datetime)
Insert into #horas values('1900-01-01 16:50:03')
Insert into #horas values('1900-01-01 22:13:59')
SELECT
RIGHT('00' + CONVERT (VARCHAR(2),
SUM (DATEPART(MINUTE, myfecha )) / 60 +
SUM (DATEPART(HOUR, myfecha ) )), 2)
+ ':' +
CONVERT (CHAR (2), SUM (DATEPART(MINUTE, myfecha )) % 60)
FROM #horas
drop table #horas

aun no me sale
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

espero te ayude

Publicado por MIGUEL (1 intervención) el 07/10/2014 17:08:42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
ALTER procedure [dbo].[pa_generarHorarioSala] --'03','07-10-2014',1,22,60
@codigo_hab char(2),
@diaEnCurso varchar(10),
@horainicio int, --09:00
@horafin int,    --22:00
@horarango int   --00:30
 
as
begin
BEGIN TRANSACTION
	BEGIN TRY
--calculando horario
declare @horaAvanza varchar(max)
 
create table #tbl_ayuda
	(
	Tcodigo  int not null identity(1,1),
	Thorario varchar(max)
	)
insert into #tbl_ayuda(thorario)
values(cast(@horainicio as varchar(max))+cast(':00' as varchar(max)))
 
--select  * from #tbl_ayuda
declare @i as int
set  @i=1
 
declare @horaprueba varchar(max)
set @horaprueba = @horainicio
 
while(@horaprueba<>@horafin)
begin
	set @horaavanza=(select substring(ltrim(dbo.addtime((select thorario from #tbl_ayuda where tcodigo=@i),cast('00:' as varchar(max))+ cast(@horarango as varchar(max)))),12,8))
	set @horaprueba=(select datepart(hh,substring(ltrim(dbo.addtime((select thorario from #tbl_ayuda where tcodigo=@i),cast('00:' as varchar(max))+ cast(@horarango as varchar(max)))),12,8)))
	insert into #tbl_ayuda(thorario)
	values(@horaavanza)
	set @i=@i+1
end
 
--select  * from #tbl_ayuda
--
declare @cantMedicos as int
set @cantMedicos=(select count(*) from tbl_habitacion where estado_hab<>0 and codigo_hab=@codigo_hab)
--declare @i as integer
set  @i=1
 
 
--select * from tbl_habitacion
--declare @codigo_med as varchar(max)
--select * from tbl_procedimiento
--select * from tbl_cita
while (@i<=@cantMedicos)
		begin
			--select 'entro'
--			set @codigo_med =(select codigo_med from tbl_medico where estado_med<>'01' and cast(codigo_med as int)=@i)
			if not exists(select * from tbl_procedimiento where codigo_hab=@codigo_hab and fecha_pro=@diaEnCurso)
				begin
					insert into tbl_procedimiento(codigo_hab,fecha_pro,hora_pro,estado_pro,docgenerado,coddocgen)
					select @codigo_hab,@diaEnCurso,Thorario,1,'','' from #tbl_ayuda
				end
			set @i =@i+1
		end
	COMMIT TRANSACTION
	END TRY
	BEGIN CATCH
		--select 'hola'
		DECLARE @ErrorMessage NVARCHAR(4000);
		SELECT @ErrorMessage = 'SQL:' + ERROR_MESSAGE()
		raiserror(@ErrorMessage,11,1)
		ROLLBACK TRANSACTION
	END CATCH
end
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