タイトルまんま、21:58, 09:01, 13:23
とかを21:55, 09:00, 13:20
と5分単位で丸めたい、切り捨てたい。
SQL Sever
select
GETDATE()
, dateadd(mi, datediff(mi, cast(GETDATE() as date), GETDATE()) % 5 * -1, dateadd(mi, datediff(mi, 0, GETDATE()), 0))
, dateadd(mi, datediff(mi, dateadd(dd, datediff(dd, 0, GETDATE()), 0), GETDATE()) % 5 * -1, dateadd(mi, datediff(mi, 0, GETDATE()), 0))
, dateadd(mi, datediff(mi, datediff(dd, 0, GETDATE()), GETDATE()) % 5 * -1, dateadd(mi, datediff(mi, 0, GETDATE()), 0))
秒を切り捨てた現在時刻から、今日の経過分数を5で割った余りを引く。上の三つどれも同じ。
参考サイト
– 追記 2020-10-30
Oracle
select
sysdate
, systimestamp
, round(sysdate, 'MI') + ((5 - mod(extract(MINUTE from cast(round(sysdate, 'MI') as timestamp)), 5)) / 1440) as ROUND_TIME
from
dual
追記ここまで