舍入到精确时间的时间SQL Server

时间:2018-04-27 13:49:48

标签: sql select time rounding

我有这个SQL查询:

select  
    e.Cedula, 
    concat (e.Nombre, ' ', e.Apellido) nombre, 
    C.Descripcion cargo,
    max(case when mo.Sentido = 'Entrada' then cast(mo.FechaHora as time)
    end) as Entrada,
    max(case when mo.Sentido = 'Salida' then cast(mo.FechaHora as time)
    end) as Salida,
    e.Direccion observaciones 
from 
    mambo.dbo.EMPLEADO e
left join 
    mambo.dbo.CARGO c on e.IdCargo = c.IdCargo
left join 
    mambo.dbo.MARCACIONES_PARA_LIQUIDACION mo on e.IdEmpleado = mo.IdEmpleado 
                                              and CAST(mo.FechaHora AS DATE) = '2018-04-25'
where 
    e.IdCentroCosto = 14 
    and e.estado = '1' 
group by 
    e.IdEmpleado, e.Cedula, e.Nombre, e.Apellido, c.Descripcion, e.Direccion

返回此结果:

Result of Select

有没有办法可以在15分钟的范围内将时间缩短到最接近的确切时间?

示例:

  • 如果是6:45我希望结果显示为7:00
  • 如果是6:58我希望结果显示为7:00
  • 如果是17:15我希望结果显示为17:00
  • 如果是17:01我希望结果显示17:00

非常感谢任何帮助

2 个答案:

答案 0 :(得分:0)

嗯。嗯。 。 。如何自己构建价值呢?

datename(hour, dateadd(minute, 30, max(case when mo.Sentido = 'Entrada' then mo.FechaHora end))) + ':00' as Entrada,

增加30分钟是为了方便四舍五入。

答案 1 :(得分:0)

你可以把它变成一个功能,其中一些可以简化/删除它在那里显示步骤/清晰度。

req.query.foo === 'bar'