SOMAR HORAS NO SQL SERVER

 Tópico anterior Próximo tópico Novo tópico

SOMAR HORAS NO SQL SERVER

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#479163 - 17/01/2018 12:36:43

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Última edição em 17/01/2018 12:40:17 por JCM0867

Olá pessoal,

Digamos que tenho uma tabela

Codigo = 1
Hora1 = 16:45
Hora2 = 78:30
Hora3 = 90:00
Hora4= 124:42
as horas estão em varchar(6), horas:minutos

Como faço no SQL Server somar as 4 horas
Tipo Select Codigo, Hora1 + Hora2 + Hora3 + Hora4 as TotalHoras From Tabela

Resultado:
Campo Código = 1
Campo TotalHoras = 309:57  'varchar(6)

Grato




#479164 - 17/01/2018 13:43:24

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Use tipagem correta para obter resultados corretos sem precisar fazer cast.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#479165 - 17/01/2018 14:52:31

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Qual tipagem correta quando for mais de 24h
qual a maneira correta de guardar no banco 123:52 por exemplo



#479166 - 17/01/2018 15:27:22

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Total de horas e minutos é sempre a diferença entre uma DateTime inicial e um DateTime final. Essa a maneira mais correta e confiável possível.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#479175 - 17/01/2018 20:56:35

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Última edição em 17/01/2018 20:57:50 por JCM0867

entendi, só que mudar agora vai fazer uma nó na tabela e nos códigos que usam essa tabela, não teria outra maneira nem que não seja a mais correta.




Resposta escolhida #479179 - 17/01/2018 22:50:26

ELUCIMAR
GOIANIA
Cadast. em:Dezembro/2003


 Anexos estao visíveis somente para usuários registrados

JCM0867

Fiz duas funções que te ajudara com isso. Não é o ideal mais resolve seu problema.

Exemplo de uso das functions:

Declare @TabHoras Table
(
Codigo int,
Hora1 varchar(10),
Hora2 varchar(10),
Hora3 varchar(10),
Hora4 varchar(10)
)

Insert into @TabHoras(Codigo,Hora1,Hora2,Hora3,Hora4)
Values(1,'16:45','78:30','90:00', '124:42')

Select Codigo, dbo.FctConverterMinutosEmHoras(dbo.FctConverterHorasEmMinutos(Hora1) + dbo.FctConverterHorasEmMinutos(Hora2) + dbo.FctConverterHorasEmMinutos(Hora3) + dbo.FctConverterHorasEmMinutos(Hora4)) as TotalHoras From @TabHoras


E.A.M

#479180 - 17/01/2018 23:00:32

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Ok,
Amanhã irei testar e darei um retorno

Valeu



#479182 - 18/01/2018 07:28:53

ELUCIMAR
GOIANIA
Cadast. em:Dezembro/2003


JCM0867

Faltou esta function que esqueci de enviar:

create FUNCTION  [dbo].[FctSplitString]
(
    @string NVARCHAR(MAX),
    @delimiter varchar(5)
)
RETURNS @output TABLE(Id int identity(1,1),Campo NVARCHAR(MAX) )
BEGIN
    DECLARE @start INT, @end INT
    SELECT @start = 1, @end = CHARINDEX(@delimiter, @string)
    WHILE @start < LEN(@string) + 1 BEGIN
        IF @end = 0  
            SET @end = LEN(@string) + 1
      
        INSERT INTO @output (Campo)  
        VALUES(SUBSTRING(@string, @start, @end - @start))
        SET @start = @end + 1
        SET @end = CHARINDEX(@delimiter, @string, @start)
    END
    RETURN
END

E.A.M

#479295 - 25/01/2018 13:47:47

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Deu certo Elucimar, só fiz algumas alterações para se adequar a minha situação.
Valeu



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por JCM0867 em 25/01/2018 13:48:18