Usuário com melhor resposta
Somar horas varchar

Pergunta
-
Olá pessoal!
Esta é a minha tabela.
Este é o meu select
SELECT distinct TOP 1000 CONVERT(VARCHAR(100), [DTLogon], 103) AS Date ,[Agente] AS AGENT ,[Acao] AS ACTION ,[Numero] AS REASON ,[DTLogon] ,[Duracao] AS DURATION ,CONVERT(VARCHAR(100), [DTLogon], 108) AS HOUR FROM [Tactium_MIS].[dbo].[T_DetAtivAgt] where Acao NOT IN ('Pos-atendimento', 'Receptivo', 'Discando', 'Ativo', 'Logon', 'Logoff') AND Agente = 'ALAINE...' order by HOUR
A coluna DURATION é VARCHAR(100) e a HOUR é a conversão (108) da DTLogon.
O que eu preciso é somar as horas ou minutos da coluna Duration com a coluna Hour para gerar a coluna Retorno.
Agora como eu faço isso se o Data Type das colunas são diferentes ?
Douglas Filipe http://douglasfilipe.wordpress.com
Respostas
-
Boa tarde,
Douglas, acho que você pode fazer a conversão da coluna [Duracao] para Time para fazer os cálculos:
SELECT DATEADD (SECOND, DATEDIFF(SECOND, 0, cast([Duracao] as time)), [DTLogon]) as Retorno,
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
-
Deleted
- Marcado como Resposta Douglas Filipe quinta-feira, 21 de fevereiro de 2019 14:27
-
Douglas, acredito que você pode manter o comando sugerido anteriormente trocando apenas Time para DateTime.
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Douglas Filipe quinta-feira, 21 de fevereiro de 2019 14:27
Todas as Respostas
-
Boa tarde,
Douglas, acho que você pode fazer a conversão da coluna [Duracao] para Time para fazer os cálculos:
SELECT DATEADD (SECOND, DATEDIFF(SECOND, 0, cast([Duracao] as time)), [DTLogon]) as Retorno,
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
-
-
A coluna DURATION é VARCHAR(100) e a HOUR é a conversão (108) da DTLogon.
Douglas, se a coluna DURATION armazena um intervalo de tempo, na forma hh:mm:ss, por que a coluna está declarada como varchar(100)? Se ela armazena valores de até 23:59:59, poderia ser declarada como time(0).
E a coluna DTLogon, como está declarada?
Procure declarar as colunas da tabela conforme o tipo de dados referente ao conteúdo. No artigo “Como definir o tamanho de colunas de tamanho variável? você encontra as explicações sobre os impactos negativos em declarar o tamanho de uma coluna string muito acima do tamanho estimado.
Existe algum motivo para utilizar a cláusula DISTINCT? Se não há, sugiro que a retire, pois geralmente ela aumenta o tempo de processamento.
José Diz Belo Horizonte, MG - Brasil [Linked In] [e-mail] [Porto SQL]
Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.
José,
Concordo com suas observações!!!
O que me deixa muito preocupado, é que este tipo de cenário a cada dia esta mais comum do que parece, os desenvolvedores, programadores, devops, não tem a menor preocupação em utiliza tipos de dados corretos, mas não porque não sabe ou não querem, é porque na sua grande maioria utilizam ferramentas prontas para criação de estruturas de bancos de dados, o que torna o processo de geração do código mais rápido, mas sem se levar em consideração o dado que será armazenado.
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
-
Na real meu negocio é infra, to quebrando um galho pq o dev saiu.
Este é o design da tabela feito por uma empresa de desenvolvimento. Por isso declarei o varchar(100).
Com a coluna desta forma fica difícil trabalhar até no SSRS.
Douglas Filipe http://douglasfilipe.wordpress.com
-
A coluna DURATION é VARCHAR(100) e a HOUR é a conversão (108) da DTLogon.
Douglas, se a coluna DURATION armazena um intervalo de tempo, na forma hh:mm:ss, por que a coluna está declarada como varchar(100)? Se ela armazena valores de até 23:59:59, poderia ser declarada como time(0).
E a coluna DTLogon, como está declarada?
Procure declarar as colunas da tabela conforme o tipo de dados referente ao conteúdo. No artigo “Como definir o tamanho de colunas de tamanho variável? você encontra as explicações sobre os impactos negativos em declarar o tamanho de uma coluna string muito acima do tamanho estimado.
Existe algum motivo para utilizar a cláusula DISTINCT? Se não há, sugiro que a retire, pois geralmente ela aumenta o tempo de processamento.
José Diz Belo Horizonte, MG - Brasil [Linked In] [e-mail] [Porto SQL]
Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.
Douglas Filipe http://douglasfilipe.wordpress.com
-
-
Na real meu negocio é infra, to quebrando um galho pq o dev saiu.
Douglas, eu já havia acessado teu blog e percebido que os artigos não tinham relação direta com SQL Server.
A estrutura dessa tabela é um exemplo de como não se deve declarar colunas! rs
Além disso, me parece que há informações redundantes, com as colunas Data e Hora contendo a mesma informação que a coluna DTLogon, só que em partes: a data e a hora. É isto mesmo?
Me parece que a solução proposta pelo "gapimex" atende ao que necessita; por isso que não postei sugestão sobre o que solicita.
José Diz Belo Horizonte, MG - Brasil [Linked In] [e-mail] [Porto SQL]
Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.
A realidade aqui é a seguinte:
Uma implantação de SharePoint com SSRS, ficou pendente este relatório para o Operacional da empresa. Esse banco é de uma URA, desenvolvida por outra empresa, os caras dizem que a tabela é assim e se quiser qualquer alteração tem que solicitar modificação... projeto.. PoC...
Enfim, unica coisa que preciso é somar a "Duracao" a Hora ou a DTLogon para ter o Retorno
Douglas Filipe http://douglasfilipe.wordpress.com
-
Deleted
- Marcado como Resposta Douglas Filipe quinta-feira, 21 de fevereiro de 2019 14:27
-
Então, vou agradecer de coração a ajuda de todos mas descobri um coisa:
Microsoft SQL Server 2005 - 9.00.1399.06 (X64)
Oct 14 2005 00:35:21
Copyright (c) 1988-2005 Microsoft Corporation
Developer Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1)
Msg 243, Level 16, State 1, Line 1
Type time is not a defined system type.Por isso os caras não querem nem ouvir falar nesta tabela.
Douglas Filipe http://douglasfilipe.wordpress.com
-
Douglas, acredito que você pode manter o comando sugerido anteriormente trocando apenas Time para DateTime.
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Douglas Filipe quinta-feira, 21 de fevereiro de 2019 14:27
-
-
Douglas, acredito que você pode manter o comando sugerido anteriormente trocando apenas Time para DateTime.
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
Douglas Filipe http://douglasfilipe.wordpress.com