我DATETIME
在 mySQL ( fromStamp
) 中有一个字段,其中包含有效的日期/时间戳。我需要能够将分钟向上舍入到下一个 6 分钟间隔。秒数应被忽略或视为 :00
因此,如果我的 DATETIME 是,2013-01-31 13:07:17
我需要将结果2013-01-31 13:12:00
排除在 :00 和 :06 以及 :31 和 :36 之间的时间之外,那些需要四舍五入DOWN。
:00-06 round DOWN to 00
:07-12 round UP to 12
:13-18 round UP to 18
:19-24 round UP to 24
:24-30 round UP to 30
:31-36 round DOWN to 30
:37-42 round UP to 42
:43-48 round UP to 48
:49-54 round UP to 54
:55-00 round UP to 00
我找到了一种合理的方法来选择性地向下舍入:
SELECT
fromStamp,
CONCAT(DATE_FORMAT(`fromStamp`, '%Y-%m-%d'), ' ',
SEC_TO_TIME((TIME_TO_SEC(`fromStamp`) DIV 360) * 360))
FROM `table`
WHERE (
DATE_FORMAT(`fromStamp`, '%i') BETWEEN 0 AND 6
OR DATE_FORMAT(`fromStamp`, '%i') BETWEEN 31 AND 36
);
有没有一种很好的方法可以将其他所有内容四舍五入到接下来的 6 分钟间隔?(我觉得我错过了一些简单的东西)
更新
所以我将采用@mellamokb 的解决方案,但他关于秒的评论是正确的,它确实发挥了作用。
2013-01-22 12:24:13 的 DATETIME 向上舍入到 12:30,这不是所需要的,所以我首先要做:
UPDATE table SET fromStamp = CONCAT(DATE_FORMAT(fromStamp, '%Y-%m-%d %h:%i'), ':00');
摆脱几秒钟,然后他的查询得到了我正在寻找的东西。