SQL Server查询/功能最多可以舍入到一半

时间:2013-11-14 12:26:22

标签: sql-server rounding

我需要一个在SQL Server中总是最接近整整或半小时的函数。

实施例

1.2 = 1.5
1.5 = 1.5
1.6 = 2.0
1.0 = 1.0
0.2 = 0.5
0.8 = 1.0

我找到了很多关于如何解决这个问题的选项 - 但我希望有一个有效的选项可以用于此目的。

谢谢..

1 个答案:

答案 0 :(得分:9)

如果您正在处理数字,最简单的方法是乘以2,取最高限度(向上舍入到最接近的整数),再除以2.

Select Ceiling(1.2 * 2) / 2
Select Ceiling(1.6 * 2) / 2

由于您的问题提到“整个或半小时”,这里有一些代码可以容纳DateTime数据:

Declare @Temp Table(Data DateTime)

Insert Into @Temp Values('20131114 11:00')
Insert Into @Temp Values('20131114 11:15')
Insert Into @Temp Values('20131114 11:30')
Insert Into @Temp Values('20131114 11:45')
Insert Into @Temp Values('20131114 11:59')

Select Data, DateAdd(Minute, Ceiling(DateDiff(Minute, '0:00', Data) / 30.0) * 30, '0:00')
From   @Temp