有馬総一郎のブログ

(彼氏の事情)

2019年03月08日 23:16:33 JST - 1 minute read - SQL

SQL文で時間をxx分単位に丸める

タイトルまんま、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

追記ここまで