mysql - 関数 - 終了 時刻 切り捨て 単位




最も近い15分のセグメントに時間を丸める方法 (2)

ここで私が使用したいくつかの大まかなコードが、私が望むものに本当に近い結果を得ました。 私は秒を使わなかったので、私はちょうど半分の地点の近くで分を選んだ。

SELECT
       CASE 
            WHEN minute(timeIn) BETWEEN 0 and 7 THEN SEC_TO_TIME((TIME_TO_SEC(timeIn) DIV 3600) * 3600)
            WHEN minute(timeIn) BETWEEN 8 and 22 THEN ADDTIME(SEC_TO_TIME((TIME_TO_SEC(timeIn) DIV 3600) * 3600), '00:15:00')
            WHEN minute(timeIn) BETWEEN 23 and 37 THEN ADDTIME(SEC_TO_TIME((TIME_TO_SEC(timeIn) DIV 3600) * 3600), '00:30:00')
            WHEN minute(timeIn) BETWEEN 38 and 52 THEN ADDTIME(SEC_TO_TIME((TIME_TO_SEC(timeIn) DIV 3600) * 3600), '00:45:00')
            WHEN minute(timeIn) BETWEEN 53 and 59 THEN ADDTIME(SEC_TO_TIME((TIME_TO_SEC(timeIn) DIV 3600) * 3600), '01:00:00')
       END as 15_min
    FROM
      clock.punches;

MySQLで最も近い15分(例えば、0,15,30,45)に丸めるにはどうすればよいですか?


SELECT FROM_UNIXTIME( TRUNCATE(UNIX_TIMESTAMP(NOW()) / 900,0)*900);

これは、任意の時間値に丸められるように一般化することができる。 900秒= 15分。 900を他の丸め係数で置き換えることができます。







rounding