SQL 服务器中的舍入时间

Rounding time in SQL Server

我需要在 SQL 服务器中将时间四舍五入到最近的四分之一。

例如:

到目前为止我已经试过了

declare @var datetime = '2016-11-06 13:12:35.000'

select @var as original_time

select 
    dateadd(minute, datediff(minute, 0, @var) / 15 * 15, 
    iif(datediff(minute, 0, @var) % 15.0 < 7.5, 0, 
    iif(datediff(minute, 0, @var) % 15.0 < 21.0, 15, 30 ) ))

输出:

预期结果是 '2016-11-06 13:15:00.000' 但这是我得到的输出。

我在尝试之前提到了 this question

转换为浮点数,将日期作为整数,将时间作为分数。然后四舍五入为24(小时)* 4(季度)

select CONVERT(DATETIME,ROUND(CONVERT(FLOAT, @var)*24*4,0)/24/4)

将 ROUND 更改为 CEILING 或 FLOOR 以向上或向下取整