Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ilano

Soma de Horas

Recommended Posts

Olá pessoal,

 

Tenho a seguinte tabela:

 

CREATE TABLE [dbo].[H_Calendario] (

[Cal_Codigo] int NOT NULL,

[Tur_Codigo] int NOT NULL,

[Cal_Hora1] datetime NULL,

[Cal_Hora2] datetime NULL,

[Cal_Hora3] datetime NULL,

[Cal_Hora4] datetime NULL,

[Cal_Hora5] datetime NULL,

[Cal_Hora6] datetime NULL,

PRIMARY KEY CLUSTERED ([Hor_Codigo])

)

ON [PRIMARY]

GO

Em minha aplicação ela está dividida da seguinte forma:

 

AULA1: Compreende os horário 1 e 2;

 

AULA2: Compreende os horários 3 e 4;

 

AULA3: Compreende os horários 5 e 6.

 

Primeiro preciso calcular a diferença de cada horário, para isso estou fazendo:

 

SELECT

DATEDIFF(HOUR, Cal_Hora1, Hor_Hora2) H1,

DATEDIFF(HOUR, Cal_Hora3, Hor_Hora4) H2,

DATEDIFF(HOUR, Cal_Hora5, Hor_Hora6) H3

FROM H_Calendario

 

Até aí está tranquilo, o problema está em fazer a soma destes três horários para retornar um resultado em horas.

 

Tentei fazer assim, mas não está dando certo:

 

SELECT Cal_Hora1, Cal_Hora2, Cal_Hora3, Cal_Hora4, Cal_Hora5, Cal_Hora6,

CONVERT(CHAR(5), CONVERT(datetime,

DATEADD(HOUR, DATEDIFF(HOUR, Cal_Hora1, Cal_Hora2),

DATEADD(HOUR, (SELECT DATEDIFF(HOUR, Cal_Hora3, Cal_Hora4)), (DATEDIFF(HOUR, Cal_Hora5, Cal_Hora6)))) , 114), 108)

TOTAL

FROM TURMAS.T_Calendario

Como posso resolver isto???

 

Grato,

 

Ilano.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui somar fazendo o SQL abaixo, só q está me retornando em um valor inteiro, não consegui no formato de horas. Se alguém souber, por favor me ajude!

 

 

SELECT Cal_Codigo, SUM(DATEDIFF(HOUR, H1, H2) +

DATEDIFF(HOUR, H3, H4) +

DATEDIFF(HOUR, H5, H6)) HORAS FROM (

SELECT

Cal_Codigo,

H1 =

CASE WHEN Cal_Hora1 IS NULL THEN '00:00'

ELSE Cal_Hora1

END,

 

H2 =

CASE WHEN Cal_Hora2 IS NULL THEN '00:00'

ELSE Cal_Hora2

END,

 

H3 =

CASE WHEN Cal_Hora3 IS NULL THEN '00:00'

ELSE Cal_Hora3

END,

 

H4 =

CASE WHEN Cal_Hora4 IS NULL THEN '00:00'

ELSE Cal_Hora4

END,

 

H5 =

CASE WHEN Cal_Hora5 IS NULL THEN '00:00'

ELSE Cal_Hora5

END,

 

H6 =

CASE WHEN Cal_Hora6 IS NULL THEN '00:00'

ELSE Cal_Hora6

END

FROM H_Calendario) TESTE

GROUP BY Cal_Codigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.