Usuário com melhor resposta
Cálculo de horas

Pergunta
-
Pessoal, eu fiz uma Function que serve para uma tela para o tempo restante de um SLA.
Mas, estou com um problema que imagino ser simples, mas, que não estou conseguindo progredir.
O código que montei foi esse:
CREATE function [dbo].[Calcular_Horas_Faltante] (@End Datetime) Returns Varchar(13) Begin Declare @Start Datetime=SYSDATETIME() Declare @Hora Varchar(04) Declare @Min Varchar(02) Select @Hora = DateDiff(n,@Start,@end)/60 , @Min = DateDiff(n,@Start,@end)%60 Return (Select Case When Len(@Hora)=1 Then '0'+@Hora Else @Hora End + ':' + Case When Len(@Min)=1 Then '0' +@Min + ':00' Else @Min + ':00' End ) End
Nela eu coloco o tempo final do SLA, a função pega o datetime atual do servidor e mostra quanto tempo o setor tem para poder resolver o problema e esta funcionando bem.
Porém, quando a data é menor que hoje, ele devolve como se fosse "negativo".
No caso, eu precisaria que sempre quando a data que eu enviar na função for menor que a data atual, ele devolva apenas o caractere " - ".
Alguém poderia dar essa ajuda, por favor?
- Editado Paulo.Sérgio sexta-feira, 21 de fevereiro de 2014 19:03 faltou palavras
Respostas
-
Paulo,
Segue um modelo para você adaptar no seu código:
alter function [dbo].[Calcular_Horas_Faltante] (@End Datetime) Returns Varchar(13) Begin Declare @Start Datetime=SYSDATETIME() Declare @Hora Varchar(04) Declare @Min Varchar(02) Declare @RET VARCHAR(13) IF DateDiff(d, GETDATE(), @End) < 0 BEGIN SELECT @RET = '-' END ELSE BEGIN Select @Hora = DateDiff(n,@Start,@end)/60 , @Min = DateDiff(n,@Start,@end)%60 Select @RET = Case When Len(@Hora)=1 Then '0'+@Hora Else @Hora End + ':' + Case When Len(@Min)=1 Then '0' +@Min + ':00' Else @Min + ':00' End END Return (@RET) End GO
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Giovani Cr segunda-feira, 24 de fevereiro de 2014 12:20
Todas as Respostas
-
Paulo,
Segue um modelo para você adaptar no seu código:
alter function [dbo].[Calcular_Horas_Faltante] (@End Datetime) Returns Varchar(13) Begin Declare @Start Datetime=SYSDATETIME() Declare @Hora Varchar(04) Declare @Min Varchar(02) Declare @RET VARCHAR(13) IF DateDiff(d, GETDATE(), @End) < 0 BEGIN SELECT @RET = '-' END ELSE BEGIN Select @Hora = DateDiff(n,@Start,@end)/60 , @Min = DateDiff(n,@Start,@end)%60 Select @RET = Case When Len(@Hora)=1 Then '0'+@Hora Else @Hora End + ':' + Case When Len(@Min)=1 Then '0' +@Min + ':00' Else @Min + ':00' End END Return (@RET) End GO
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Giovani Cr segunda-feira, 24 de fevereiro de 2014 12:20
-