Usuário com melhor resposta
Arredondar hora

Pergunta
-
Tenho o seguinte campo que trata uma hora que vem do banco:
CONVERT(NVARCHAR, CONVERT(DATETIME, P.REF/24), 108) AS HORAS
Ele retorna:
03:56:59 00:43:12
O que preciso: Retornar somente as horas e minutos arrendando da seguinte forma:
Se segundos for > 30 : 03:57 (ex: 03:56:59) Se segundos for < 30 : 00:43 (ex: 00:43:12)
Respostas
-
Bom dia,
otaciojb, experimente mais ou menos dessa forma:
declare @Ref decimal(10, 4); set @Ref = 3.95; with CTE_Conv as ( select CONVERT(DATETIME, @REF/24) DataHora ) select DataHora, dateadd (minute, datediff(minute, 0, DataHora) + case when datepart(second, DataHora) > 30 then 1 else 0 end, 0) from CTE_Conv
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta otaciojb sexta-feira, 10 de fevereiro de 2017 14:15
Todas as Respostas
-
Tente assim:
select case when datepart(s, getdate()) >= 30 then convert(varchar(5), dateadd(mi, 1, getdate()),108) else convert(varchar(5), getdate(),108) end
Att,
Antero Marques
_______________________________________________________________________________
Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta. O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.
- Editado Antero Marques sexta-feira, 10 de fevereiro de 2017 14:09
-
Bom dia,
otaciojb, experimente mais ou menos dessa forma:
declare @Ref decimal(10, 4); set @Ref = 3.95; with CTE_Conv as ( select CONVERT(DATETIME, @REF/24) DataHora ) select DataHora, dateadd (minute, datediff(minute, 0, DataHora) + case when datepart(second, DataHora) > 30 then 1 else 0 end, 0) from CTE_Conv
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta otaciojb sexta-feira, 10 de fevereiro de 2017 14:15
-
-