Usuário com melhor resposta
Diferença Dt e hora

Pergunta
-
Prezados boa tarde,
Na SQl, abaixo eu imagino que esteja fazendo certo, porem nao estou conseguindo obter o resultado esperado.
tenho duas colunas de data
Ex:
Abertura e fechamento
17/10/2010 15:30;35 18/10/2010 17:20:00
na sentenca eu consegui achar a diferenca de Dias, porem a diferenças as horas nao estou conseguindo.
agradeço a ajuda de todos
SQL
SELECT
ABERTURA
,
PRAZOLIMITE
,
FECHAMENTO
,
/*DateDiff(hh,ABERTURA,FECHAMENTO)/60 As Horas,
Convert(char(05),DateAdd(minute,DateDiff(n,ABERTURA, FECHAMENTO),FECHAMENTO),14) ,*/
CODATENDIMENTO
AS 'ATENDIMENTO',
ASSUNTOOC
,
HORASMINUTOS
,
HORASMINUTOS
/ 60 AS 'HORA',
CASE
WHEN
CODSTATUS = 'C' THEN 'CANCELADO'
WHEN
CODSTATUS = 'A' THEN 'EM ANDAMENTO'
WHEN
CODSTATUS = 'T' THEN 'AGUARDANDO TERCEIROS'
WHEN
CODSTATUS = 'E' THEN 'AGENDADO RESPONDIDO'
WHEN
CODSTATUS = 'G' THEN 'AGENDADO A RESPONDER'
WHEN
CODSTATUS = 'R' THEN 'CONCLUIDO A RESPONDER'
WHEN
CODSTATUS = 'D' THEN 'AGENDADO DESPERTADO'
WHEN
CODSTATUS IN ('U', 'F','O')
THEN
'CONCLUIDO' END 'STATUS',
Substring
(Ltrim(Rtrim(P.NOME)), 1,
Case
When (Charindex(' ', Ltrim(Rtrim(P.NOME))) - 2) < 0
Then
Len(Ltrim(Rtrim(P.NOME))) Else Charindex(' ', Ltrim(Rtrim(P.NOME))) - 1 End)
FROM
hatendimentoext
INNER
JOIN HATENDENTE AS H ON H.CODCOLIGADA = hatendimentoext.CODCOLIGADA
AND
H.CODATENDENTE = hatendimentoext.CODATENDENTE
INNER
JOIN PPESSOA AS P ON P.CODIGO = H.CODPESSOA
ORDER
BY CODSTATUS
Respostas
-
Oi Ronnie,
Antes de mais nada, não deixe de utilizar a função que converte para o fuso horário do usuário. Ex:
dbo.fn_UTCToLocalTime(scheduledstart)
Sobre a diferença de horas, experimente utilizar o comando datename, de acordo com o exemplo abaixo:
(select datename(hour,Campo_de_Data))
[]´s
Carlos Amorim Junior
"Já ajudou a comunidade hoje?"
http://www.dynamicscrm.com.br- Sugerido como Resposta Carlos Amorim Junior segunda-feira, 18 de outubro de 2010 22:45
- Marcado como Resposta Ronnie Von quinta-feira, 21 de outubro de 2010 10:14
-
Olá Ronnie,
Você pode utilizar a função DATEDIFF:
http://msdn.microsoft.com/pt-br/library/ms189794.aspx
Ela irá retornar a diferença entre duas data no formato que desejar (horas, dias, minutos...), como por exemplo:
DATEDIFF(hour, campoDataInicio, campoDataFim)
Abraço,
Ricardo Alves
www.ricardoalves.me- Sugerido como Resposta RicardoAlves quarta-feira, 20 de outubro de 2010 15:49
- Marcado como Resposta Ronnie Von quinta-feira, 21 de outubro de 2010 10:14
-
Oi Ronnie,
Você substituiu o "Campo_de_Data" pelo seu campo que contém a data?
Vi que você já utilizou DATEDIFF e DATENAME, mas faça o seguinte.
select
DATEDIFF(D,GETDATE()-2,GETDATE()) as [Dias],
DATEDIFF(HH,GETDATE()-2,GETDATE()) as [Horas],
DATEDIFF(MINUTE,GETDATE()-2,GETDATE()) as [Minutos],
DATENAME(HH,GETDATE()) as [Parte da Hora Atual],
DATENAME(HH,GETDATE())-3 as [Parte da Hora Atual - 3 horas],
convert(numeric,DATENAME(HH,GETDATE())) - convert(numeric,DATENAME(HH,GETDATE())-3) as [Exemplo de Diferena de Horas]
Observe os resultados. Acho que lhe ajudarão.
Referências:
http://msdn.microsoft.com/pt-br/library/ms174395.aspx
http://msdn.microsoft.com/pt-br/library/ms189794.aspx
[]´s
Carlos Amorim Junior
"Colabore! A comunidade precisa de você."
http://www.dynamicscrm.com.br- Sugerido como Resposta Carlos Amorim Junior quarta-feira, 20 de outubro de 2010 20:37
- Marcado como Resposta Ronnie Von quinta-feira, 21 de outubro de 2010 10:14
Todas as Respostas
-
Oi Ronnie,
Antes de mais nada, não deixe de utilizar a função que converte para o fuso horário do usuário. Ex:
dbo.fn_UTCToLocalTime(scheduledstart)
Sobre a diferença de horas, experimente utilizar o comando datename, de acordo com o exemplo abaixo:
(select datename(hour,Campo_de_Data))
[]´s
Carlos Amorim Junior
"Já ajudou a comunidade hoje?"
http://www.dynamicscrm.com.br- Sugerido como Resposta Carlos Amorim Junior segunda-feira, 18 de outubro de 2010 22:45
- Marcado como Resposta Ronnie Von quinta-feira, 21 de outubro de 2010 10:14
-
Olá,
Deu certo?
[]´s
Carlos Amorim Junior
"Colabore! A comunidade precisa de você."
http://www.dynamicscrm.com.br -
-
Olá Ronnie,
Você pode utilizar a função DATEDIFF:
http://msdn.microsoft.com/pt-br/library/ms189794.aspx
Ela irá retornar a diferença entre duas data no formato que desejar (horas, dias, minutos...), como por exemplo:
DATEDIFF(hour, campoDataInicio, campoDataFim)
Abraço,
Ricardo Alves
www.ricardoalves.me- Sugerido como Resposta RicardoAlves quarta-feira, 20 de outubro de 2010 15:49
- Marcado como Resposta Ronnie Von quinta-feira, 21 de outubro de 2010 10:14
-
Oi Ronnie,
Você substituiu o "Campo_de_Data" pelo seu campo que contém a data?
Vi que você já utilizou DATEDIFF e DATENAME, mas faça o seguinte.
select
DATEDIFF(D,GETDATE()-2,GETDATE()) as [Dias],
DATEDIFF(HH,GETDATE()-2,GETDATE()) as [Horas],
DATEDIFF(MINUTE,GETDATE()-2,GETDATE()) as [Minutos],
DATENAME(HH,GETDATE()) as [Parte da Hora Atual],
DATENAME(HH,GETDATE())-3 as [Parte da Hora Atual - 3 horas],
convert(numeric,DATENAME(HH,GETDATE())) - convert(numeric,DATENAME(HH,GETDATE())-3) as [Exemplo de Diferena de Horas]
Observe os resultados. Acho que lhe ajudarão.
Referências:
http://msdn.microsoft.com/pt-br/library/ms174395.aspx
http://msdn.microsoft.com/pt-br/library/ms189794.aspx
[]´s
Carlos Amorim Junior
"Colabore! A comunidade precisa de você."
http://www.dynamicscrm.com.br- Sugerido como Resposta Carlos Amorim Junior quarta-feira, 20 de outubro de 2010 20:37
- Marcado como Resposta Ronnie Von quinta-feira, 21 de outubro de 2010 10:14
-
-