Ir para conteúdo

POWERED BY:

Arquivado

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

Nakazatis

Datediff

Recommended Posts

Tenho um problemão com uma consulta. O sistema de gerenciamento de Service Desk possui a data de registro e a data de escalonamento ao 2º. nível no formato 'yyyy-mm-dd hh:00:00.000', utilizando o datediff consigo estabelecer somente em um formato (ou ano, ou mes, ou dia, ou horas, ou minutos ou segundos ou em milisegundos), a maioria dos incidentes são escalonados em menos de uma hora, porém existem exceções. Estas exceções seriam melhor apresentadas na forma de horas, ou dependendo do caso, dias ou meses.

 

Exemplo:

Data de Registro: '2009-04-01 00:00:00.000'

Data de Escalonamento ao 2º. Nível: '2009-04-10 00:00:00.000'

 

Se eu utilizo o parametro de minuto ele me apresenta 12960 minutos

Se eu utilizo em hora ele me apresenta 216 horas

Se eu utilizo o parametro de dia ele me apresenta corretamente os 9 dias.

Se eu utilizo o parametro de mes ele me apresenta "0"

 

 

Porém, existe o caso inverso:

 

Data de Registro: '2009-04-01 00:00:00.000'

Data de Escalonamento ao 2º. Nível: '2009-04-01 00:10:00.000'

 

Se eu utilizo o parametro de mes, ele me resulta em "0"

Se eu utilizo o parametro de dia, ele me apresenta "0"

Se eu utilizo o parametro de hora, ele me apresenta "0"

Se eu utilizo de minuto ele me apresenta os 10 minutos

 

 

Como proceder? http://forum.imasters.com.br/public/style_emoticons/default/excl.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não ficou claro a sua dúvida mas, supondo que queira um select que mostre quantos meses, dias, horas e minutos há de diferença entre duas datas, é só montar um select simples com os datediffs para mostrar os valores.

 

SELECT DATEDIFF(MM,GETDATE(),GETDATE()) AS MESES, 
	   DATEDIFF(DD,GETDATE(),GETDATE()) AS DIAS, DATEDIFF(HH,GETDATE(),GETDATE()) AS HORAS, 
	   DATEDIFF(MM,GETDATE(),DATEADD(MM,10,GETDATE())) AS MINUTOS,
	   CONVERT(VARCHAR,DATEDIFF(MM,GETDATE(),GETDATE())) + ' MESES, ' +
	   CONVERT(VARCHAR,DATEDIFF(DD,GETDATE(),GETDATE())) + ' DIAS, ' + 	
	   CONVERT(VARCHAR,DATEDIFF(HH,GETDATE(),GETDATE())) + ':' + 
	   CONVERT(VARCHAR,DATEDIFF(MM,GETDATE(),DATEADD(MM,10,GETDATE()))) + ' hs' AS ESCALONAMENTO

O select acima vai retornar estes valores:

 

MESES - DIAS - HORAS - MINUTOS - ESCALONAMENTO

0 - 0 - 0 - 10 - 0 MESES, 0 DIAS, 0:10 hs

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu chronos!!! Essa é a idéia!!!

 

Encontrei uma parada estranhíssima...

 

Quando o campo hora é diferente (Data inicial 2009-03-06 10:59:00 e Data final 2009-03-06 11:00:00), a diferença é de 1 minuto, mas a consulta devilve 1 hora e 1 minuto...

 

 

 

 

 

Não ficou claro a sua dúvida mas, supondo que queira um select que mostre quantos meses, dias, horas e minutos há de diferença entre duas datas, é só montar um select simples com os datediffs para mostrar os valores.

 

SELECT DATEDIFF(MM,GETDATE(),GETDATE()) AS MESES, 
	   DATEDIFF(DD,GETDATE(),GETDATE()) AS DIAS, DATEDIFF(HH,GETDATE(),GETDATE()) AS HORAS, 
	   DATEDIFF(MM,GETDATE(),DATEADD(MM,10,GETDATE())) AS MINUTOS,
	   CONVERT(VARCHAR,DATEDIFF(MM,GETDATE(),GETDATE())) + ' MESES, ' +
	   CONVERT(VARCHAR,DATEDIFF(DD,GETDATE(),GETDATE())) + ' DIAS, ' + 	
	   CONVERT(VARCHAR,DATEDIFF(HH,GETDATE(),GETDATE())) + ':' + 
	   CONVERT(VARCHAR,DATEDIFF(MM,GETDATE(),DATEADD(MM,10,GETDATE()))) + ' hs' AS ESCALONAMENTO

O select acima vai retornar estes valores:

 

MESES - DIAS - HORAS - MINUTOS - ESCALONAMENTO

0 - 0 - 0 - 10 - 0 MESES, 0 DIAS, 0:10 hs

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, você pode montar os cálculos necessários para resolver o seu problema utilizando o case e fórmulas matemáticas... estou meio enrolado no momento pra montar uma pra você, mas dá pra fazer... pesquise um pouco que consegue.

 

[]'s

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.