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

Jim*_*Jim 4 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
Run Code Online (Sandbox Code Playgroud)

我找到了很多关于如何解决这个问题的选择 - 但我希望有一个有效的特定目的.

谢谢..

G M*_*ros 9

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

Select Ceiling(1.2 * 2) / 2
Select Ceiling(1.6 * 2) / 2
Run Code Online (Sandbox Code Playgroud)

由于您的问题提到"整个或半小时",这里有一些容纳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
Run Code Online (Sandbox Code Playgroud)