4

我需要一个函数,它总是会在 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

我发现了很多关于如何解决这个问题的选项——但我想要一个专门用于此目的的有效选项。

谢谢..

4

1 回答 1

10

如果您正在处理数字,最简单的方法是乘以 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
于 2013-11-14T12:29:14.700 回答