4

SQL Server で常に最も近い 1 時間または 30 分に切り上げる関数が必要です。

元。

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つ欲しいです。

ありがとう..

4

1 に答える 1

10

数値を扱う場合、最も簡単な方法は 2 を掛け、上限 (最も近い整数に切り上げる) を取り、2 で割ることです。

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

あなたの質問は「1時間または30分」に言及しているので、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 に答える