SQL 服务器中的舍入时间
Rounding time in SQL Server
我需要在 SQL 服务器中将时间四舍五入到最近的四分之一。
例如:
'2016-11-06 13:12:23.000' --> '2016-11-06 13:15:00.000'
'2016-11-06 13:06:23.000' --> '2016-11-06 13:00:00.000'
到目前为止我已经试过了
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 以向上或向下取整
我需要在 SQL 服务器中将时间四舍五入到最近的四分之一。
例如:
'2016-11-06 13:12:23.000' --> '2016-11-06 13:15:00.000'
'2016-11-06 13:06:23.000' --> '2016-11-06 13:00:00.000'
到目前为止我已经试过了
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 以向上或向下取整