3

日時を最も近い 15 分に丸める関数があります。しかし、代わりに最も近い四分の一に切り捨てる方法はありますか?

例。

08:14:00 becomes 08:00:00
08:03:00 becomes 08:00:00
08:29:00 becomes 08:15:00 
08:55:00 becomes 08:45:00

これは、最も近い四分の一に四捨五入する必要があるものです。

(
@dt datetime
)
returns datetime
as
begin
declare @result datetime
declare @mm int
set @mm=datepart(minute,@dt)
set @result = dateadd(minute,-@mm + (round(@mm/cast(15 as float),0)*15) , @dt )

return @result
4

3 に答える 3

3

SQL Serverの使用:

select cast( 
         FLOOR( cast( GetDate() as float)*(24*4)) / (24*4) 
       as smalldatetime) AS "datetime_quarter"

戦略は次のとおりです。

  • 日付を浮動小数点数に変換して、*24時間数*4を取得し、四半期数を取得します
  • で切り捨てFLOOR
  • によって日数に戻す/(24*4)
  • 日数を日時に変換します。smalldatetime浮動小数点の丸めの問題を回避するために使用されます。

ROUNDこれは、使用するように、またはCEILING代わりに簡単に調整できます。4または、 (4分の1)の代わりに他の時間の倍数を使用します。

于 2012-12-06T08:53:22.817 に答える